C的指针问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:46:00
for(i=0;i<5;i++)
scanf("%d",p+i);
for(i=0;i<5;i++)
printf("%d",*p++)

输入的p+i 换成 p++ 输出的*p++ 换成*(p+i) 第二个for前要加 p=a
为什么?
输入不变 输出的*p++ 换成*(p+i) 可以正常输出数字
为什么?

第一个问题:如果将 p+i 换成 p++ (如果只讲指针理解成地址的话,当然比较片面)因为p++使指针p向下一个地址移动了,而p+i未移动指针,故此第二个输出循环要将p再移动到数组的首地址,不然的话将输出数组a最后一个元素后的地址的值。
第二个问题:同理也是指针移动造成的,输入用 p+i 故p未变,还是指向数组首地址