【发布时间】:2020-10-16 20:06:08
【问题描述】:
我想知道为什么在 c 中打印变量的地址会得到类似于 823759733 的输出 同时,在 C++ 中做同样的事情显示 0x7ff6474009c?? 这是'cout'的工作,将地址格式化为十六进制吗?还是隐藏变量内存地址以显示一些任意地址来封装它? 我知道 C++ 中的虚拟内存中的一切都在发生,这对 C 来说是一样的吗?
例子-
int a=10;
int* ptr=&a;
printf("%d", ptr);
它应该打印一个整数。
用 c++ 编写的相同代码 和
cout<<ptr
它显示一个十六进制(我想知道为什么?)
【问题讨论】:
-
如何在 C 中打印地址?看起来你在 C 代码中做错了什么。您是否启用了编译器警告?你的编译器应该告诉你你做错了什么。
-
请人分析你的代码时,请出示你的代码
-
引用(地址)在十进制形式中是毫无意义的。很难找到十进制地址的用途
-
在 C 中,
printf("%d", ptr);是 未定义的行为,因为打印说明符与参数不匹配。使用printf("%p", (void*) ptr);
标签: c++ c memory encapsulation addressing