*(*(a+i)+j)、*(a[i]+j)、(*(a+i))[j]为什么都表示元素a[i][j]?*(a+i)+j、a[i]+j又为什么都表示a[i][j]的地址?虽然可以死记格式,但我想知道原理,以及有什么办法来区分指针表示的到底谁元素还是地址?
*(a+i)不是取出指针所指数据么?为什么说又是指地址?
追答因为这是二维指针啊
*(a+i)是指针的数据,例如0x1234,但是0x1234只是代表数据,你需要再*一下,相当于去0x1234的地址去拿 数据,这里的数据才是你要的
c语言里面怎么用指针表示二维字符数组
二维数组就是数组的数组,二维数组即数组的元素是一维数组的数组。那么我们要用指针指向二维数组,就是要定义一个指向数组的指针了。例如:char str[3][10]; \/\/定义了一个char型的二维数组 char (*pstr)[10]; \/\/定义了一个指向char型的数组指针 pstr=str; \/\/指针指向二维数组str 下面用pstr这...
C语言如何定义指针指向字符型二维数组
1.使用列指针:定义一个列指针p,让它指向二维数组的第0个元素 int a[3][4];int *p;p=&a[0][0];\/\/因为a[0]是第0行的数组名,所以p=&a[0][0]相当于p=a[0],因为a[i][j]前面共有i*4+j个元素 该二维数组的任意i行j列元素可表示为*(p+i*4+j)。2.使用行指针:定义一个...
C语言 怎么用指针输出一个二维数组的全部值
C语言的数组(不管多少维)在内存中都是线性储存的。所以用一级指针加偏移就可以访问所有元素。举个例子,有一个10*10的二维数组a,这样就可以输出:int a[10][10];int *p = (int *)a;int i;for (i = 0; i < 10 * 10; i++)printf("%d", *(p + i));
C语言怎么定义一个字符指针指向一个二维字符数组的首地址
二维数组也是“数组的数组”所以定义一个指向由m个元素组成的一维数组指针即可指向二维数组的首元素地址。如:char arr[2][2] = { { 'a', 'b' }, { 'c', 'd' } };char (*p)[2];p=arr; \/\/ p指向首元素地址。char c = *(p[0]+ 1);\/\/ 指向0行1列 即字符b ...
求c语言指针方式引用二维数组问题
a[0]代表第一组首元素地址,当然,a[0]也指向数组首元素的地址,a[0]=&a[0][0];a是对a取值,它取出的是a[0],当然=&a[0][0];&a[0]指a[0]的地址,还是它自己,所以&a[0]=&a[0][0]。所以,第一行个打印语句输出的5个内容都是一样的,所以,输出5个19ff0c。是a[0][0...
C语言求一个二维组每行每列的最大值 并放在一个新数组中 ,用指针做?
既然你要用指针来做,我就用指针来写。利用数组元素地址连贯性来做。include <stdio.h> define MXR 4\/\/最大行数 define MXC 3\/\/最大列数 int main(){ int i=0,mr,mc,*p=NULL,*ps=NULL;int nums[MXR][MXC]={{8,6,7},{2,6,3},{1,4,2},{9,3,5}};int mrs[MXR],mcs[MXC...
使用列指针输出二维数组元素
在C语言中,数组是不同于普通变量的,实际上C定义的数组是指向该数组第一个元素的指针。这是第一个概念,即数组名就是指针,所以可以直接当做指针来用,例如:对于一个数组a[],要取其第三个元素的值,既可以用a[2],也可以用a+2来访问。对于一个二维数组,如果用下标变量来表示的话,则可以...
C语言程序设计中"二维数组中元素指针的表示"的例题,求详解
⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。一个二维数组在计算机中存储时,是按行存储的,即先存储第一行的元素,再存储第二行的元素。当把每一行看作一个整体,即作为一个大的数组元素时,原来的二维数组也就变成一个一维数组了。而每个大数组...
C语言中二维数组的指针问题
&a[0][0] 也是指0行0列的元素地址 p=&a[0][0] 它的意思的使指针p指向数组a的第0行第0列,而在后面执行p++的时候,就会使指针顺序后移,依次指向 a[0][1] a[0][2]……a[2][2] 的地址;假如:p=a 这是使指针p指向数组a的首行,当你输出*p这个值的时候,它输出的值是a[0...
C语言中二维数组行指针是什么
第一,来详细介绍二维数组与指针的关系。- 首先定义个二维数组 array[3][4],p 为指向数组的指针。若p=array[0],此时p指向的是二维数组第一行的首地址,则 p+i 将指向array[0]数组中的元素array[0][i]。由以上所介绍的二维数组在内存中的存储方式可知,对数组中的任一元素array[i][j] ,...