Как очистить указатель — C++?

Дан указатель
double **p = 0;
Выполните следующие задания (решения можно оформлять внутри функции main).
Создайте конструкцию, изображенную на рисунке.
dd0c0b5cff3848ad883168f4d1682b9d.jpg
Выведите число в квадратике на экран. После этого удалите все динамические объекты.

double **p = new double*; // динамическое выделение памяти под указатель  double
    double value = 2;
    double *index = new double; // динамическое выделение памяти под объект типа double
    index = &value; // Передаем указателю адрес переменной value; 
    p = &index; // передаем указателю адрес указателя index;
    cout << "Адрес value:                       " << &value << "\n";
    cout << "В index хранится адрес value:      " << index << "\n";
    cout << "Адрес index:                       " << &index << "\n";
    cout << "В p хранится адрес index:          " << p << "\n";
    cout << "В *p хранится значение index:      " << *p << "\n";
    cout << "В **p хранится значение value:     " << **p << "\n";
    return 0;
  • Вопрос задан
  • 5417 просмотров
Решения вопроса 1
Olej
@Olej
инженер, программист, преподаватель
int main( void ) {
   double **p = 0;
   *( *( p = new double* ) = new double ) = 2;
   cout << **p << endl;
   delete *p;
   delete p;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Therapyx
@Therapyx
Data Science
stackoverflow.com/questions/13223399/deleting-a-po... это?
Решением описали:
myPointer = new int;
delete myPointer;
myPointer = NULL;
Ответ написан
@OnlyBooid Автор вопроса
Therapyx Спасибо большое! В ходе своих экспериментов я пришел к данному решению.

void oneCell {
    double **p = new double*; // динамическое выделение памяти под указатель  double
    double value = 2;
    double *index = new double; // динамическое выделение памяти под объект типа double
    index = &value; // Передаем указателю адрес переменной value; 
    p = &index; // передаем указателю адрес указателя index;
    cout << "Адрес value:                       " << &value << "\n";
    cout << "В index хранится адрес value:      " << index << "\n";
    cout << "Адрес index:                       " << &index << "\n";
    cout << "В p хранится адрес index:          " << p << "\n";
    cout << "В *p хранится значение index:      " << *p << "\n";
    cout << "В **p хранится значение value:     " << **p << "\n";
    p = new double*;
    index = new double;
    delete p;
    delete index; 
    return 0;
}


Осталось немного разобраться, почему именно так.
P.s. буду учить английский, искал ответы на stackoverflow используя "index" как указатель( Указатель - pointer.

при использовании:

delete p;
delete index;

или

delete *p;
delete index;

076bc1089e904402a55d4650642a884b.jpg
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы