c语言中的二维数组a[a][j]可以表述为*(*(a+1)+j),但是我看不懂这个东西啊

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 13:27:52
c语言中的二维数组a[a][j]可以表述为*(*(a+1)+j),但是我看不懂这个东西啊

c语言中的二维数组a[a][j]可以表述为*(*(a+1)+j),但是我看不懂这个东西啊
c语言中的二维数组a[a][j]可以表述为*(*(a+1)+j),但是我看不懂这个东西啊

c语言中的二维数组a[a][j]可以表述为*(*(a+1)+j),但是我看不懂这个东西啊
这个表述是有问题的,*(*(a+1)+j)没有规定首地址,*(a+1)已经表示a+1地址中的数据了,明显与数组概念不合.
a[a][j]里面数组名称和一个维度的数组的个数表示重叠了,所以我换一种方式来表示:a[y][x].为了便于理解,假定y=3,x=2.在数组中的数据有y行,x列;也就是3行,2列.假定第一行数据为{1,2};第二行数据为{3,4};第三行的数据为{5,6},那么数组a在内存中的数据为从首地址开始的连续6个数据,{1,2,3,4,5,6}.假定首地址为0x01,那么a[0][0]的地址为0x01,对应数据“1”,该可以表示为((行数 + 0x01)+ 列数),该地址的数据可以表示为*((行数 + 0x01)+ 列数),这个表示形式,和题目中的比较接近.以此类推,a[0][1]的地址为0x02,对应数据“2”;a[1][1]为第2行第2列,地址为0x04,对应数据0x04.
由此可以看出a[y][x]可以表示为*((x + &a) + y);&a为数组a的首地址.
不知道这样讲您是否能够理解.同时“c语言中的二维数组a[a][j]可以表述为*(*(a+1)+j)”这个题设本身是错误的,不要被其误导.

c语言中的二维数组a[a][j]可以表述为*(*(a+1)+j),但是我看不懂这个东西啊 c语言中,指针于二维数组的问题假设我们引用二维数组a中的元素a[I][J],指针P指向a.书上说引用方法有四种 p[i]+[j] *(*(p+i)+j) (*(p+i))[j]) *(p[i]+j)为什么要弄得这么复杂啊,而且看不懂为什么可以这 一道C语言的题.若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为?A.i*m+j B.j*m+i C.i*m+j-1 D.i*m+j+1为什么?在数组中的位置是什么意思? C语言中 二维数组@a[i][j]的地址为什么可以表示成*(a+i)+j难道*(a+i)还表示一个地址的值?求高手详细解释 C语言计算数组中任一元素a[i][j]在数组中位置的公式若二维数组a有m列,假设a[0][0]位于数组的第一个位置上,则计算数组中任一元素a[i][j]在数组中位置的公式为A i * m + jB j * m + iC i * m + j-1D i * m + 【求助c语言】已知int a【2】【3】,则对数组元素a【i】【j】的地址表述错误的是已知int a【2】【3】,则对数组元素a【i】【j】的地址表述错误的是A,&a[i][j] B,*(a[i]+j) C,*(a+i)+j D,*a+i*3+j C语言二维数组a[i][j],为什么a[1]和*(a+1)等价啊?*(a+1)为什么会是一个地址?弄糊涂了, 若有二维数组a的说明:var a:array[0..m,0..n]; 则计算数组a的任意元素a[i][j]在数组中的位置公式为()A:i*(n+1)+j B:j*(n+1)+I C:i*(n+1)+j-1 D:i*(n+1)+j+1 C语言、二维数组指针中的 * 和 &我看的是谭的那本C,有书的可以翻下吧(没书的看我的叙述吧),244、245页,看的我很迷茫啊1、对于二维数组a[3][4], a+i 和 *(a+i) 怎么会是一样的呢?书上的那 关于C语言二维数组指针的疑问定义一个二维数组int a[i][j],由定义可知a=&a[0][0]=a[0],由于a可看成是带有i个一维数组元素的数组,所以由一维数组的情形可推知a[i]=*(a+i)和a+i=&a{i]和a=&a[0],即有a=&a[0] C语言 二维数组问题 a[i][j]中 i是列数,j是行数,那么a[0][1]又是怎么理解?是列数为0,那么a[0][0]呢? C语言二维数组int a[N][N]={0};是什么意思? 为什么一维数组a[i]指针p,可以有p=a;但是当二维数组a[i][j]时却不可以p=a c语言指针*(*(a+i)+j)什么意思,*(a+i)为什么是地址啊,a不应该已经是地址了么,a+i为什么不是地址a是一个二维数组 定义 int a[3][4]; 取二维数组元素数据a[i][j],为什么可以用 *(&a[0][0]+4*i+j) 和 *(a[0]+4*i+j) 定义 int a[3][4]; 取二维数组元素数据a[i][j],为什么可以用 *(&a[0][0]+4*i+j) 和 *(a[0]+4*i+j) C语言,将一个二维数组a的行和列的元素互换,存到另一个二维数组b中.列如 123 1 4 2 5 456 3 6main(){ int a[2][3]={{1,2,3},{4,5,6}};int b[3][2],i,j;printf(array a: );for(i=0;i c语言二维数组排序给定一个10*10的矩阵a,编一程序实现a[i1][j1] 若二位数组a有m列,则计算任意元素a[i][j]在数组中的位置是的公式为___?答案是i*m+j+1.why?不是二位数组,是二维,不好意思哦