关于指向一维数组的指针的小问题
定义一个指向一维数组的指针,int(*p)[4],已经让其指向一个一维数组,那么请问能进行以下运算吗:(*p)++,*p=*p+1,
编译显示这两个语句错误,为什么?难道其指向一个数组后就是常指针,不能再被赋值以及自增
程序代码:
#include <stdio.h>
int main(int argc, char **argv)
{
int a[4]={1,3,5,7};
int(*p)[4];
p=&a; //问题这里,数组名a是一个地址,而你把&a赋值给p,也就是把a地址的地址给p
printf(" p0 = %d\n",*(*p)); //于是,要解a需要用到2次解地址符*
printf(" p1 = %p\n",*p+1); //至于p1元素,它保存的值为一个地址
printf("*p1 = %d\n",*(*p+1)); //获取这个地址的值需要*
p = *p+1;
printf(" p0 = %d\n",*(*p)); //此时的p0应该等于p1的值3了
return 0;
}
[此贴子已经被作者于2017-2-12 22:15编辑过]