Zeeking99 Ответов: 2

Как напечатать адрес, хранящийся в указателе на языке C++?


Когда я объявляю указатель в C, после указания его на адрес я могу видеть адрес с помощью оператора:

int *ptr = &var;
printf("%p", ptr);


Это позволит напечатать адрес, хранящийся в ptr, который будет напечатан.
Как сделать то же самое в C++?

Я использовал символьный указатель, чтобы указать на динамически выделяемую память. Мне нужен адрес, с которого начинается воспоминание.

Что я уже пробовал:

Я попытался найти в интернете, чтобы сделать это, но ничего не смог найти.

0x01AA

пробовать void *ptr= &var

KarstenK

в вашем случае лучше использовать 'char *p', чтобы все (даже компилятор) знали, что вы делаете ;-)

2 Ответов

Рейтинг:
2

Richard MacCutchan

Мой метод немного более прост, чем у Карло.:

cout << "Pointer value: " << hex << ptr << endl;

Однако C++ по-прежнему поддерживает printf функция.


Zeeking99

Как это работает? Не могли бы вы объяснить это, пожалуйста? Я не понимал, как им пользоваться. Спасибо.

Richard MacCutchan

То hex оператор говорит записывающему устройству вывода вывести следующее число в шестнадцатеричной системе счисления. А следующий параметр-это указатель, который является адресом памяти, то есть числом.

CPallini

Ооопс...
Мой 5.

Zeeking99

Теперь я понимаю, что это не работает на моей машине. Мой текстовый редактор не выделяет слово hex. Обычно это означает, что это не ключевое слово языка. Поставляется ли этот шестнадцатеричный оператор с определенной версией C++?
Спасибо за ответ.

Richard MacCutchan

То hex оператор является стандартным членом класса ios. Видеть функции <ios> | Microsoft Docs[^].

Zeeking99

Спасибо. Теперь я понимаю.

Рейтинг:
17

CPallini

Попробуй

cout << reinterpret_cast<void *>(p) << endl;


Zeeking99

Спасибо, это работает.