C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/13 15:25:35
C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针
C指针问题迷惑中,(*p)[4]和*p到底有什么区别?
自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针变量p是指向整型变量的,p+1所指向的元素是p所指向的下一元素.可以改用另一方法,使p不是指向整型变量,而是指向一个包含m个元素的一维数组.这时,如果p先指向a[0](即p=&a[0]),则p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,见图10.28.”————看到这里,似乎说的是p指向的是二维数组a[3][4]的每一行的第一个位置,书中前面举出了一个排长、班长、列兵的例子,那么这里p应该是充当了排长的角色而指向的是班长吗?那么下面又给出了这样一个例子:main(){int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int (*p)[4],i,j;p=a;scanf("i=%d,j=%d\n",i,j,*(*(p+i)+j));}运行情况如下:i=1,j=2 /*回车*/a[1,2]=13/*程序第3行 int (*p)[4] 表示p是一个指针变量,它指向包含4个元素的一维数组.*/————一个问题就是,为什么要用(*p)[4]这种方式呢?用一个*p,依次指一行中的每一元素,(*p)[4]到底是什么意思?一开始认为它是一个数组,但书上意思却又说它不是.以上说得比较多,也不知道大家看明白了没有,总之是感觉很迷惑,还望各位老师及师兄能一一给予详细的解答.
C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针
你好!
int *p这是声明一个指针变量,即p的值是内存中某一个内存单元的编号(地址值),比如:int a=3,*p=&a;表示把变量a的地址赋给指针变量p,使指针变量p指向变量a,此时要使用a的值;*p
而int (*p)[4],声明的是一个指向含有4个整形元素的一维数组的指针p.即p是指向一维数组的元素的首地址的.
比如:int a[4][4];
int (*p)[4];
p=&a[2];是指针变量指向数组a的第二行的第一个元素.