若有定义:int a[3][4];则表达式&a[2][1]-a的值为9 请高手说明下这个过程 若定义:int a[3][3];则表达式&a[2][1]-a...

95. \u82e5\u6709\u5b9a\u4e49:int a[3][3];\u5219\u8868\u8fbe\u5f0f&a[2][1]-a\u7684\u503c\u4e3a\uff08 \uff09

\u9519\u9898\u2014\u2014\u56e0\u4e3a&a[2][1]\u662fint *\u578b\uff0c\u800ca\u662fint (*)[3]\u578b\uff0c\u76f4\u63a5\u76f8\u51cf\u7c7b\u578b\u4e0d\u5339\u914d\uff0c\u7f16\u8bd1\u4e0d\u8fc7\u3002\u5199\u6210&a[2][1]-&a[0][0]\u6216&a[2][1]-a[0]\u624d\u53ef\u4ee5\uff0c\u7ed3\u679c\u662f7\uff0c\u5219A\u6b63\u786e\u3002\u6240\u4ee5\u81ea\u5df1\u8003\u8651\u3002

a[0][0]\uff0ca[0][1]\uff0ca[0][2]
a[1][0]\uff0ca[1][1]\uff0ca[1][2]
a[2][0]\uff0ca[2][1]\uff0ca[2][2]
&a[2][1]\u8868\u793a\u53d6a[2][1]\u7684\u5730\u5740\uff0ca\u8868\u793a\u6570\u7ec4\u7684\u9996\u5730\u5740\uff0c\u5c31\u662fa[0][0]\u7684\u5730\u5740\uff0c\u8fd9\u6837\u6570\u4e00\u4e0b\u5c31\u51fa\u6765\u4e86\uff0c\u7b49\u4e8e7\uff0c\u9009C

二维数组是按行存储的也就是如下这样:
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]

而a表示的就是a[0][0]所在的地址。所以&a[2][1]-a的值为9。

请你在草稿纸上画一个三行、四列的方格网,从左上角开始填写编号0,0、0,1、0,2、0,3、1,1、……2,3,然后你数一下2,1的位置(从0开始刚好是第9个),所以a[2][1]的内存地址与a[0][0]的差是9

基础知识:a表示a[0][0]的地址,&a[2][1]表示a[2][1]的地址。

a表示a[0][0]的地址,&a[2][1]表示a[2][1]的地址。

二维数组按行线性存储。

你定义了一个3行4列的int数组,a表示a[0][0]的地址,&a[2][1]表示的是a[2][1]的地址。

扩展阅读:int a[3][4] ... 若有定义和语句int a 3 3 ... 若有定义int a 3 b 2 ... 若有说明 int a ... 若有定义int a 8 b 5 c ... 若已定义int a下面对1 ... int a[10]={ }哪里错了 ... 若有以下定义inta 5 p a ... 若有定义int a23则以下对 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网