读书人

关于c语言指针的一个奇怪现象,该怎么解

发布时间: 2012-09-10 22:20:12 作者: rapoo

关于c语言指针的一个奇怪现象
代码:
int * p=(int *)0x0022ff44;
*p=123;
printf("%p\n",p);
printf("%d\n",*((int *)(0x0022ff44)));
运行结果:
000000007B
123
疑问:
预计p是0x0022ff44,为什么p的值是000000007B,代码只是修改的p指向的内存的值
(注:环境是win7+dev_cpp,编译器每次分配给变量的内存地址都一样,所以代码中的地址能合法的被访问)
本人初学c语言,望各位大神解释疑惑

[解决办法]
指针本身地址和它指向的地址不要混淆
[解决办法]

探讨
C/C++ code
int x = 5;


int *p=&x;
*p=123;


printf("x addres is:%p\n",&x);
printf("%%p is : %p\n",p);


这个的输出结果是一样的。 123的十六进制值刚好是7B。估计是编译器和环境不同的问题。我的……

读书人网 >C语言

热点推荐