这是怎么回事啊?问题在代码的注释里。。。。。。多谢众位好心人啦

[复制链接]
查看11 | 回复1 | 2011-5-16 20:48:26 | 显示全部楼层 |阅读模式
#include
int main(void)
{

int a=3,b=6,*p;

p=&a;//起始时p所指的地址是37814108

printf("a=%d,*p=%d\n",a,*p);

printf("a=%d,p=%d\n",a,p);

*p++;p=&b; //本来p所指的地址是增加的,但为什么去掉语句 p=&b后,p所指的地址是37814112,而该语句不去时,p所指的地址是37814104,竟然减少了,不知道这是为什么

printf("a=%d,*p=%d\n",a,*p);

printf("a =%d,p=%d\n",a,p);

return 0;
}

回复

使用道具 举报

千问 | 2011-5-16 20:48:26 | 显示全部楼层
一个int占用内存空间4个字节,去掉语句 p=&b后,p的地址增加4,变为37814112,我想这个你没有疑问。如果不去年的话,p则指向了b的内存地址,b的内存地址有可能先于a分配,所以地址值少于a的,在定义变量的时候,int a=3,b=6,*p;这是一条语句,在同一条语句内部,机器为各位变量申请内存空间不一定是按你写的那个顺序来的。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行