早教吧作业答案频道 -->其他-->
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语言的人帮忙解答,指出我的思维误区.我都为这问题冥思苦想好几天了,每次拿起书本就把该节内容看一边,就是不理解这了.
假设a是一个3行4列的二维数组,请问为什么a[0]与*(a+0)是等价的,
我的理解是二维数组名a既然是该数组首元素的地址,那么(a+0)也是一个地址,“*(a+0)”就是指向“(a+0)”这个地址的内容(即首个元素值).
a[0]与*(a+0),一个元素地址和一个元素内容又如何能等价~
请懂C语言的人帮忙解答,指出我的思维误区.我都为这问题冥思苦想好几天了,每次拿起书本就把该节内容看一边,就是不理解这了.
▼优质解答
答案和解析
(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~
“*(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 b 0 ... 0 0 0 a b ... 0 0 . . . . . . . . 2020-05-16 …
SUMIF函数隔行求和计算范围AJ:AP条件AJ49=0时AJ50=0,AJ49>0时AJ50=A 2020-05-16 …
奇函数中,若定义域含有0,为什么就有f(0)=0?我都有图像反例:如果可以是非连续函数,则两条直线 2020-06-17 …
当a=-1,-0.5,0,0.5,1,1.5,2时.a2-a是正数还是负数?当a的绝对值大于2时, 2020-06-23 …
请教行星齿轮参数选择有一行星齿轮减速机,三级传动,相关参数如下:第一级:模数3,中心距93太阳轮Z 2020-07-18 …
已知y=f(x)是定义在R上的偶函数,且在(0,+∞)上是减函数,如果x1小于0,x2大于0,且| 2020-08-01 …
0的二重积分为什么等于0?我觉得对0第一次积分得到的应该是个常数c,对常数进行第二次积分时得到的应 2020-08-02 …
求行列式:第一行:α+β,α,0…0,0;第二行:β,α+β,α…0,0;……倒数第二行:0,0,0 2020-11-20 …
这个矩阵的特征向量是什么?怎么表示这个矩阵呢.M=是两行两列的,第一行1和0;第二行0和2就是这个矩 2020-12-15 …
数学问题小虫从某点0出发在一直线来回爬行,假定向右爬行的路程记为正数,向左爬行的路程记为负数,爬过的 2021-01-05 …