C语言中指针引用二维数组元素问题

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

最佳回答

生动的月饼

传统的白猫

2026-04-07 18:19:20

(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~

最新回答共有2条回答

  • 坚定的悟空
    回复
    2026-04-07 18:19:20

    (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~

上一篇 水红色是什么颜色

下一篇 赤壁之战的故事 50字