关于指针移动及首地址的问题。我表示很混乱。。。睡觉之前发一帖,明天醒来长一智。
例如,数组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;
}

