关于指针移动及首地址的问题。我表示很混乱。。。睡觉之前发一帖,明天醒来长一智。
例如,数组a[]={1,2,3,4,5,6,7},*p,**k哪位大神帮忙解释一下指针变量的操作与移动。
*p=a[],*p=a,p=&a[],**p,*p++,k=&p,(*p)++,++*p,这些分别指向那个存储单元
还有没想到的,请大侠帮忙补充。
练习题有很多这个,搞得我都糊涂了。。球大侠帮忙指点。
#include<stdio.h> int main() { int a[]={11,21,23,42,35,67,79}; int *p; int **k; //*p=a[]; 这句代码无法编译通过 //*p=a; 这句代码无法编译通过 //p=&a[]; 这句代码无法编译通过 //**p; 这句代码无法编译通过 p=a; printf("这个应该是指向数组的指针,输出应该是a[0]=11 =%d\n",*p); *p++; printf("这个应该是移动数组指针,输出应该是a[1]=21 =%d\n",*p); k=&p; printf("这个应该是指针p在内存中的地址,输出是 =%X\n",k); (*p)++; printf("这个应该是数组指针指向的数值自增1,输出应该是a[1]+1=21+1 =%d\n",*p); ++*p; printf("这个应该是数组指针自增1后再把指向的数值自增1,输出应该是a[2]+1=23+1 =%d\n",*p); return 0; }