指针不容易发现的错误
#include <stdio.h>void main()
{
int *p, i, a;
p = a;
for( i=0; i < 10; i++ )
{
scanf("%d", p++);
}
printf("\n");
for( i=0; i < 10; i++, p++ )
{
printf("%d", *p);
}
}
为什么这个错了 我找不到这个关于这个的解答 在运行 printf("%d", *p);这句时, 你的p已经不再指向a了。因为scanf("%d", p++);不断地在改变p的值 你前面一个for循环已经把p加到p=p+9了,你后面那个循环p就不是当初的p=a了,越界了 for( i=0; i < 10; i++ )
{
scanf("%d", p++);
}
关键在这句,实际上p=a+1,a+2,a+3
其实这里写p++还是++p都一样
因为前置后置自增运算符区别在于运算的时候,一个函数传值是先计算结果再调用
比如func(x++)传进去的是x+1而非x
页:
[1]