C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 13:47:45
C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就

C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就
C语言中指针引用二维数组元素问题
假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,
我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就是指向“(a+0)”这个地址的内容(即首个元素值).
a[0]与*(a+0),一个元素地址和一个元素内容又如何能等价~
请懂C语言的人帮忙解答,指出我的思维误区.我都为这问题冥思苦想好几天了,每次拿起书本就把该节内容看一边,就是不理解这了.

C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就
(a+0)是地址没错
“*(a+0)”就是指向“(a+0)”这个地址的内容(即首个元素值)这句话也没错
因为a这个地址中放的也还是一个地址

例如:
a[3][3] = { 1 , 2 , 3
4 , 5 , 6
7 , 8 , 9 };
1的地址就是a[0], (a[0]是a[0][0],a[0][1],a[0][2]中第一个数据a[0][0]的地址,下同理)
4的地址就是a[1],
7的地址就是a[2].
然后你再把这个1、4、7组成的a[0],a[1],a[2]看做一个一维数组
那么a(也可以说是a+0)表示的就是第一个数a[0]的地址.
所以*(a+0)就是地址a中所存放的数值(即a[0]),只不过这个数值是个地址的编号罢了~ 因为地址也是一串数字啊~
你可以就用这个a[3][3]写段代码试试~ 输出 *( *(a+1) + 2 ) 看看是不是等于6~

C语言中指针引用二维数组元素问题假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就 c语言中,指针于二维数组的问题假设我们引用二维数组a中的元素a[I][J],指针P指向a.书上说引用方法有四种 p[i]+[j] *(*(p+i)+j) (*(p+i))[j]) *(p[i]+j)为什么要弄得这么复杂啊,而且看不懂为什么可以这 假设二维数组a定义为float a [3][4],下列对数组第二行第二列元素引用方法中,错误的是A *(a[0]+5) B a[2][2] C a[1][1] D *(a[1]+1) 用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4]; 用C语言在主函数中定义和初始化一个二维数组a[3][4]和一个指针数组,采用指针数组去访问数组元素a[2][4] C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针 C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针 C语言用指针引用数组元素如下所示定义,对数组a中元素的正确引用是() Cint a[2][3], (*p)[3];p = a; A、(p+1)[0] B、*(*(p+2)+1) C、*(p[1]+1) D、p[1]+2这个(*p)[3]经过赋值之后是个什么东西,是几维 c语言指针传递问题一个一维数组并初始化其元素值,根据指针传递、引用传递方式对其进行由小到大进行排序指针传递是啥意思? 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语言的一个概念性问题,我很难理解.Thank you 通过地址来引用二维数组元素.若有以下定义:int a[3][4],i,j;且当0 C语言中二维数组的指针问题假设有 int a[3][3],*p; 要正确赋首地址值只可以p=a[0] p=&a[0][0]而不能 p=a?书上所说的“p=a容易造成概念上的混淆”在哪里? C语言指针概念问题!定义 int x[10],*pt=x;则对x数组元素正确引用?A *(x+3) B *&x[10] C *(pt+10) D pt+3 关于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[n]、b[n]两个数组,其中a数组元素值已知,要使b数组元素和a数组元素相等,我记得直接写b = a是不对的,这样就相当于使b的数组指针指向了a,一旦a数组元素的值改了,b也会跟着改,只能 C语言中数组元素的指针表示的问题设有以下语句,其中不是对a组数元素的正确引用的是(),其中0≦i<10int a[10]={0,1,2,3,4,5,6,7,8,9},*p=aA:a[i]B:&(*(a+i))你们都回答错了,B是正确的!但我这块一点也不 C语言的指针问题.*(p+i)是代表取值呢还是取地址?有一二维数组a[3][4]={{56,45,89,90},{13,34,56,45},{65,55,34,68}}如果我定义指针*P,指向首地址,*(p+i)就能取到数组中的值.但如果我定义指针(*p)[4],指 一、 判断对错,正确的打“√”,错误的打“×”.(8分,每题1分)1. 指针变量和变量的指针是同一个名词不同说法.( )2. 在C语言中,二维数组元素是按行存放的.( )3. 数组不可以整体赋