Я искал способ решить эту небольшую проблему со ссылками на логические указатели, но не смог найти решение. Я знаю, что C ++ становится сложным, когда дело доходит до использования указателей и ссылок.
Ниже фрагменты кода использует поток, как ссылки bool*
и я хочу назначить значение temp5 (которое true
) в bool * полностью до температуры и распечатайте его. Однако это заканчивается ошибкой сегментации. Хотелось бы узнать, что пошло не так или что мне не хватает в указателях и ссылках, когда в такой ситуации. Благодарю вас!
#include <iostream>
int main()
{
bool* temp= nullptr;
bool* temp2;
bool* temp3;
temp2 = temp;
temp3=temp2;
bool temp5 = true;
*temp3 = temp5;
std::cout << *temp <<std::endl;
return 0;
}
Вы присваиваете значение nullptr
, Это то, что вызывает ошибку сегментации
Просто замените линию
bool* temp = nullptr;
с этим
bool* temp= new bool;
Это будет работать сейчас.
И не забывайте удалять его delete
оператор.
Ваш temp3
остается неинициализированным. Разыменование может привести к нарушению доступа. А также temp
является nullptr
разыменование его (особенно — присвоение указателем) также запрещено. Другими словами, у вас есть много указателей, но все они никуда не указывают.
Более того, неясно, что этот код должен делать на самом деле.
Вы хотели что-то подобное?
int main()
{
bool value = false;
bool* temp= &value;
bool* temp2;
bool* temp3;
temp2 = temp;
temp3=temp2;
bool temp5 = true;
*temp3 = temp5;
std::cout << *temp <<std::endl;
return 0;
}