我认为对指针应该重新赋值 请大家来看看
请看下面的程序
#include <stdio.h>
void main()
{
int a[10],*p=a,i;
printf("input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",p+i);
printf("a[10]:");
for(i=0;i<10;i++)
printf("%d",*(p+i));
printf("\n");
}
我认为在第一个循环结束后,应该对指针变量重新赋值(P=a;)
因为在第一个循环结束后,指针变量P是指向&a[9]的。
但是,这程序是编译成果的。
我在中间加了p=a ; 语句,也编译成功。
我不知道为什么,请各位指教。
----------------解决方案--------------------------------------------------------
同意你的观点加上p=a
----------------解决方案--------------------------------------------------------
不加p=a编译成功不代表运行时不出错
----------------解决方案--------------------------------------------------------
不用加 你那是p+i 不是p++
----------------解决方案--------------------------------------------------------
"因为在第一个循环结束后,指针变量P是指向&a[9]的。"
晕,这样认为就不对了~~~~~~~~~~
----------------解决方案--------------------------------------------------------
不用的把,那里是p+i,P指向&a[0],p+i指向&a[9]。
----------------解决方案--------------------------------------------------------
如果是移动指针 就要加
----------------解决方案--------------------------------------------------------
同意4楼的意见~
----------------解决方案--------------------------------------------------------
p的值没有改变(没用经过自加自减运算)
----------------解决方案--------------------------------------------------------
嗯~
搞清楚了
4楼的说得对~!!thank you very much
----------------解决方案--------------------------------------------------------