@ZhGhost

Как разобраться в присваивание указателей в С++?

Привет! Объясните, почему при присваивание указателя пишут два или несколько *
Примеры:
*(DWORD**)CODE
*(DWORD*)CODE
(DWORD*)CODE
В чем их разница? Ведь по правилу присваивания третий вариант только подходит? Но использует все эти три
  • Вопрос задан
  • 308 просмотров
Пригласить эксперта
Ответы на вопрос 3
15432
@15432
Системный программист ^_^
*(DWORD**)CODE = 0; - переменная CODE содержит адрес на переменную типа "указатель на DWORD". Переходим по этому адресу и записываем туда NULL
*(DWORD*)CODE = 0; - переменная CODE содержит адрес на переменную типа "DWORD". Переходим по этому адресу и записываем туда 0
(DWORD*)CODE = 0; - переменная CODE содержит адрес на переменную типа "DWORD". Присваиваем NULL самой переменной CODE.
Ответ написан
@ZhGhost Автор вопроса
Жду кто "на пальцах" объяснит :)
Ответ написан
Ni55aN
@Ni55aN
Допустим, CODE - указатель.

int* CODE  = new int(5);
    int b = *CODE;
    cout << b << endl ;

*CODE - берем значение по адресу, который хранится в CODE указателе
(DWORD*) - приведение к типу DWORD. Знаем, что по адресу указателя хранится int, теперь будем работать с этим как с DWORD
(DWORD**) - то же самое, только первый указатель хранит адрес на второй указатель. Второй в свою очередь на адрес, в котором хранится значение, с которым будем работать как с DWORD
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы