问题描述
- 求大神解答,关于内存解析以及类型转换的编译器底层实现,图中的结果请给我一个完整的解释,谢谢
-
#if 1
#include
using namespace std;int main()
{
char str[] = "12345";
long pLong = (long)str;
pLong++;
printf("%dn", pLong);
return 0;
}
#endif
解决方案
这代码在我的编译器上没法编译
我修改了下
#include <stdio.h>
int main()
{
char str[] = "12345";
long *pLong = (long*)str;
pLong++;
printf("%dn", (int)*pLong);
return 0;
}
结果是53。
内存是这样的(十进制)
49 50 51 52 53 0 0 0 0...
你pLong++,向后移动4字节。因为intel是小端处理器,所以是53
解决方案二:
你要是输出指针,只知道它在堆栈上,但是这个就不好说了。
时间: 2024-09-04 14:17:20