大侠赶紧来啊,求解啊!!!!!

[复制链接]
查看11 | 回复5 | 2011-10-15 08:26:08 | 显示全部楼层 |阅读模式
下边是看《C语言深度剖析》中的一个程序,没看懂为什么?(感觉陈老师这点没解释清啊!)贴代码:#includestdio.hintmain(){//inti=10;int*p=(int*)1245052;printf(\"%u\\n\",p);*p=0;printf(\"%d\\n\",*((int*)1245052));printf(\"%u\\n\",p);return0;}//经测试:p的值变也为0。这到底是为什么?你可不可以清楚滴给我解释一下,为什么p也变了,也变成0了!
回复

使用道具 举报

千问 | 2011-10-15 08:26:08 | 显示全部楼层
你说的问题我在VC上也调试了,结果确如楼主所说,楼主你用的也是VC吧~我也不清楚这是为什么,但是在别的编译器上正常,就像楼上所说的!所以说是编译器的问题,没必要深究哈!
回复

使用道具 举报

千问 | 2011-10-15 08:26:08 | 显示全部楼层
混沌沙虫
回复

使用道具 举报

千问 | 2011-10-15 08:26:08 | 显示全部楼层
经测试正常
回复

使用道具 举报

千问 | 2011-10-15 08:26:08 | 显示全部楼层
楼主,那是两码事啊p=(int*)1245052是给p一个地址值为1245052。而*((int*)1245052)也就是*p了,*p就是取1245052地址的值了,上面已经给它赋值0了楼主一定要分清楚p和*p到底是什么,第一个是内存地址,第二个是对应地址里面的值
回复

使用道具 举报

千问 | 2011-10-15 08:26:08 | 显示全部楼层
P的值不是零P存储的是编号为1245052的地址,*p是这个地址存储的数的值,*p=0就把这个值变成零,p仍然为1245052。见2L测试结果其实就是一个指针变量的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行