int a[2][2]={{1,2},{3,4}},那*(a+1)代表什么?

[复制链接]
查看11 | 回复3 | 2017-9-17 00:42:04 | 显示全部楼层 |阅读模式
对于二维数组来说,例如a[x][y], 在空间结构上,x表示行,y表示列。 所以*(a+i)表示的是第i行的行首地址, 所谓行首地址,也就是该行的数组成员的首地址。 是可以等同的视为&a[0]的。 所以,这里的*(a+1)代表第一行的数组成员的首地址。 第一行数组成员为{3,4},所以*(a+1)也就指向&a[1][0],也就是这里的3这个数组成员的地址...
回复

使用道具 举报

千问 | 2017-9-17 00:42:04 | 显示全部楼层
非常简单! *(a+1)相当于a[1],它是一个int [2]的数组!说它是第二行的首地址,不是很准确,因为没有说明它的类型。你可以说a是数组a[2][2]的首地址,但地址表示不了数组。...
回复

使用道具 举报

千问 | 2017-9-17 00:42:04 | 显示全部楼层
楼上的都在乱说,a[2][2]是一个二维数组,而指针a存储的是数组{1,2}和{3,4}的起始地址指针,可以说是"指针的指针",所以*(a+1)得到的是第二个数组,也就是{3,4}的起始地址,*(*(a+1))才等于3,其实楼主可以自己用C++调试,查看内存的分配的,就明白了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行