为什么C语言中*(a+i)+j能表示a[i][j]的地址
(a+i)+j就是表示下表第i行的第j个元素的地址了。所以,(a+i)+j表示的含义是元素a[i][j]的地址,也可以用a[i]+j来表示。
C语言计算机
(a+i)+j就是一维数组a[x]的第i个元素,即另一个一维数组的第j个元素的地址。这样说吧:a[x][y]可以看成一个一维数组a[x],而这个数组里存放的是地址,是另一个一维数组的地址,所以前面要加*。明白了吗?
c语言指针*(*(a+i)+j)什么意思,*(a+i)为什么是地址啊,a不应该已经是地 ...
其实是可以把*(*(a+i)+j)看出是二维数组的一个值:a[i][j]。(a+i)看出a[i]这是一维地址,a是二维地址。对于a+1不好判断,以数组解释不通,以指针又解释德通,我就不评价了。
关于对数组元素a[i][j]的引用:*(*(a+i)+j)为什么也正确呢,*(a+i...
a+i表示相对于地址a偏移 i 个单位的地址,与a[i]等同,(a + i)表示对 相对于地址a偏移 i 个单位的地址 取内容,即表示对a[i] 的地址 再取内容,因为a[i] 与&a[i]等同,所以取出的为a[i]的地址,也与a[i]等同,为同一地址。而*(*(a+i)+j)表示二维数组第 i 行第 j 列...
C语言中 二维数组@a[i][j]的地址为什么可以表示成*(a+i)+j难道*(a+...
a是一个二维数组,a[i]表示其中的一行,是个一维数组,a[i][j]表示一行里面的一个元素。(a+i)就是a[i],是一个一维数组,当然表示一个地址,表示这个一维数组里面的第一个元素a[i][0]的地址。
*(*(a+i)+j)和(*(a+i))【j】怎么理解啊!
C和C++中,p[i]和*(p+i)是等价的。所以*(*(a+i)+j)和(*(a+i))[j],和a[i][j]都是等价的
*(*(a+i)+j)中*(a+i)+j 代表什么意思? \/\/ 为啥最外面还要*求值呢
(a+i)+j代表的是第 i行,j列的那个元素,这个没有问题吧。而那个元素是指针。不是值,所以再加*取值。 这和普通的 *p=a;一个意思。主要原因是数组里面放的全部都是指针,你可以看你定义时候的声明就知道了。
c语言:为什么&a[i][j]的值是&(a+i)+j,,,求详解!!!
首先,我们知道&a[i][j]是取的a[i][j]的地址,它是一个二维数组。对二维数组的内存分配,我们可以理解为【先存行,再存列】也就是说我们可以将int a[3][4]的存储看作是先存的一位数组a[0],a[1]和a[2],而每一个一维数组,又是一个数组,即a[0]行包括a[0][0],a[0][1],a...
a+ i+ j是不是a[ i][ j]呢?
是的,两种不同的写法,本质都是取那个地址存在的值。a[i][j]是第i行(0算起)第j列(0算起)的元素值。a+i是第i行的行指针,那么*(a+i)就是第i行第0个元素的指针,自然*(a+i)+j就是第i行的第j个元素的指针了,最后通过这个指针用*取出来的值*(*(a+i)+j)不就是第i行第j列的...
在二维数组中为什么 *(a+i)+j 代表的是地址而不是值元素?
可以这么说吧, 在二维数组中,数组名a指向二维数组的第一行,就是&a[0]. a+i就是代表第i行地址,即&a[i]. 而*(a + i)是求第i行首元素的值,就是a[i]. 这时指针从指向行元素转为指向列元素.*(a + i)+j就是a[i]+j,是a[i][j]的地址. *(*(a + i)+j)是a[i][j]的值.