llgd.net
当前位置:首页 >> 指针指向二维数组,A+i表第i行首地址,为什么加了... >>

指针指向二维数组,A+i表第i行首地址,为什么加了...

二维数组每行的首地址分别为a[0],a[1]……a[i],*(a+0)是a[0],*(a+1)是a[1]……*(a+i)是a[i]。a+i是地址,但不代表第i行的首地址a[i]。

a+i表示第i行首地址,*(a+i)表示第i行第0列元素这样说才是对的。 第i行首地址和第i行di0列元素地址是一个意思。不明白可以追问

因为*(a+1)+2的结果是一个常量,不能再用地址去指向。

值一样但是地址是不一样的。 解释:对于 array[i][j]这样一个二维数组,array[i]与&array[i][0]的值是一样的。但是array[i]本身就是一个地址,而array[i][0]是数组i+1行的元素,对其取地址的话,还要使用&符。所以地址并非同一个的。

在C语言中规定,数组名代表的是数组首元素地址。a是二维数组的数组名,因此,在二维数组中*(a+i)表示的是第i+1行0列元素的地址,即a[i][0]的地址。而a+i表示的是第i+1行的首地址。

a+1是第二行的首地址 它指向第二行,如果是(a+1)+1则指向第2行(从第0行开始数),a[1]指向第一行的第0个元素,指针指向列,a[1]+1则表示第一行的第一列元素(行和列都是从0开始)。

首先二维数组是不是可以看成几个一维数组的结合 比如a[3][4]是不是代表3个一维数组,一维数组的大小是4 那么第一个数组的数组名是a[0],然后a[0]这个数组里面有四个元素分别为{a[0][0],a[0][1],a[0][2],a[0][3]},第二个数组名是a[1],以此类推 二...

a+i和*(a+i)的值相同没错,但它们的类型不一样,代表的意义也不一样。a+i还是2维指针,*(a+i)则是一维指针。编译器对它们的解析和操作是不一样的。

a+i其实就是&a[i],肯定是地址 *(a+i)其实就是a[i],如果a是二给数组的数组名,a[i]就肯定是地址(等同于&a[i][0]),如果a只是一维数组(指针数组除外)的数组名,a[i]就不是地址(原因是:二维数组可以看作是多个一维数组组成,即数组的数组) *(a+i...

1.行指针与列指针区别是否是+1上的不同,例如a[0]+1是指a[0][1]的地址 而&a[0]+1是指a[1][0]的地址!除了上面还有其他的行指针与列指针表示方法吗?只要有其功能就可! ——本质上不存在任何区别,n维数组的存储空间都是连续的,只不静态声明数组...

网站首页 | 网站地图
All rights reserved Powered by www.llgd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com