在C语言中规定,数组名代表的是数组首元素地址。如有定义int a[10][100];a表示二维数组的数组名。a也是这个数组的首地址。因此,在二维数组中*(a+i)表示的是第i+1行0列元素的地址,即a[i][0]的地址。而a+i表示的是第i+1行的首地址。 00分享举报您可能感兴趣的内容广告 天翼云免费上云-20+款云产品免...
在C语言中规定,数组名代表的是数组首元素地址。如有定义int a[10][100];a表示二维数组的数组名。a也是这个数组的首地址。因此,在二维数组中*(a+i)表示的是第i+1行0列元素的地址,即a[i][0]的地址。而a+i表示的是第i+1行的首地址。
a 代表数组本身,但我们可以在很多地方看到数组名字是数组首地址的说法。原因是,数组类型的表达式有一个...
a 代表数组本身,但我们可以在很多地方看到数组名字是数组首地址的说法。原因是,数组类型的表达式有一个...
等同于TYPE*型。从概念上说,a表示二维数组a的首地址,而*a表示二维数组a第一行a[0]的首地址。这样在使用的时候就有所区别。比如 对a的操作a[4]表示a的第四行首地址,而对*a的操作(*a)[4]则代表第一行的第4个元素,即a[0][4]。所以a和*a除了值相同外,其它的各方面都是不同的。
为什么C语言中二维数组的数组名a和*a表示的是同一个值? 当定义二维数组a[M][N]时,数组名可以认为是二维指针,其指向二维数组的首地址。于是a的值就是首地址的值。而*a,就是a[0],a[0]是第一行的标记,代表第一行的首地址。在二维数组中,所有元素都是紧密排列的,这样整
数组下标从0开始的,即(0,0)是第一行第一个数,(0,1)是第一行第二个数(1,0)是第二行第一个数
语句中 a[1] 表示 地址 &a[1][0], a[2] 表示 地址 &a[2][0].即二维数组a 的 第2行 元素 的 首地址 和 第3行 元素 的 首地址。
定义一个二维数组a[2][3],a表示第一行a[0]的地址?a[i]表示第i行首元素的地址,即&a[i][0],&a[i][0]表示第i行首元素的地址?如此推测的话a==&a[0][0],这样的推测肯定是不对的,那么,三者有什么区别,他们的具体含义又是什么?问题来自: 指针和二维数组 若有定义语句: int a[2][3],*p[3]...