A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 星河鹭起 中级黑马   /  2014-4-25 11:51  /  996 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

复习指针时遇到个不懂的
for(int i=0;i<6;i++)
        {
        printf("%d %d\n",i,*(p+i));
        }
这个地方p的值永远不会变化。

p地址每次都加1,指针值每次都在改变。

for(int i=0;i<6;i++)
        {
        printf("%d %d\n",i,*(p++));
        }
而这个p值一直都在变化,为什么呢?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

5 个回复

正序浏览

p++只是改变了p本身 即运算后p=p+1;p的地址还是指向p[0]
回复 使用道具 举报
懂了,谢谢大家
回复 使用道具 举报
上一个*(p+i)与p[i]是等价的,每次输出p[i]值,但是p本身的值还是指向p[0]的地址,下面一个 *(p++) 中有个后增运算符++ 所以在输出*(p)之后,p的地址会增加一个单位长度,这个长度和p的类型有关,希望帮到你

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
p++是自增,改变了p本身 即运算后p=p+1;    p+1并未改变p本身

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马