я пытаюсь понять, как структуры c или c++ хранятся в памяти.
Я написал небольшую программу на С++, скомпилировал и запустил ее в отладчик. я использовал printf с %p и &variable для печати адреса, но распечатанный адрес и фактический адрес в памяти совершенно разные. на самом деле печатный адрес даже недействителен.
Любая идея, как я могу правильно напечатать реальный адрес переменной или структуры?
Спасибо
вот исходный код программы, которую я написал:
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#define XXX __asm__("nop");
int main(){
XXX;
XXX;
const char *short_string = "this is a short string";
const wchar_t *long_string = L"this is a long string";
int a = 2;
int b = 3;
int c = a + b;
int *pointer_to_a = &a;
std::cout << "the address of short_string is: " << &short_string << std::endl;
std::cout << "the address of long_string is: " << &long_string << std::endl;
std::cout << "the address of a is: " << &a << std::endl;
std::cout << "the address of a is: " << pointer_to_a << std::endl;
std::cout << a << "+" << b << "=" << c << std::endl;
std::cout << std::endl;
XXX;
XXX;
getch();
return 0;
}
cout << &ptr;
сcout << (void*)ptr;
. Все переменные имеют адреса (адрес, по которому они хранятся), но, кроме того, переменные-указатели имеют адрес, на который они указывают. Это источник большой путаницы. - person john   schedule 08.03.2019