首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-09-10 
关于c语言指针的一个奇怪现象代码:int * p(int *)0x0022ff44*p123printf(%p\n,p)printf(%d\n,*((

关于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。估计是编译器和环境不同的问题。我的……

热点排行
Bad Request.