Правильный способ ссылаться на булевы указатели друг друга в переполнении стека

Я искал способ решить эту небольшую проблему со ссылками на логические указатели, но не смог найти решение. Я знаю, что 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;
}

0

Решение

Вы присваиваете значение nullptr, Это то, что вызывает ошибку сегментации

Просто замените линию

bool* temp = nullptr;

с этим

bool* temp= new bool;

Это будет работать сейчас.

И не забывайте удалять его delete оператор.

1

Другие решения

Ваш 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;
}
4

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector