C 指针有关问题
C 指针问题
#include <stdio.h>
main(){
int *p,i,a[10];
p=a;
for(i=0;i<10;i++)
*p++=i;
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*p++);
}
这端程序是错误的,但是如果把输出里面的*p++改为*p ,怎么就对了
#include <stdio.h>
main(){
int *p,i,a[10];
p=a;
for(i=0;i<10;i++)
*p++=i;
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*p);
}

为什么会执行成功了?*p指向哪了
------解决方案--------------------
因为p=a,取一个数组中的值后,数组下标是自动指向下一个下标,
所以最后做结果输出中循环输出*p实际就是在遍历数组a,即a[i]==*p
#include <stdio.h>
main(){
int *p,i,a[10];
p=a;
for(i=0;i<10;i++)
*p++=i;
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*p++);
}
这端程序是错误的,但是如果把输出里面的*p++改为*p ,怎么就对了
#include <stdio.h>
main(){
int *p,i,a[10];
p=a;
for(i=0;i<10;i++)
*p++=i;
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*p);
}
为什么会执行成功了?*p指向哪了
c
指针
------解决方案--------------------
因为p=a,取一个数组中的值后,数组下标是自动指向下一个下标,
所以最后做结果输出中循环输出*p实际就是在遍历数组a,即a[i]==*p