关于指向一维数组的指针的小问题
定义一个指向一维数组的指针,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编辑过]