若有定义:int a[2][3];,则以下对a数组元素地址的正确表示为 若有定义:int a[2][3];则对a数组的第i行第j列元...

203,\u82e5\u6709\u5b9a\u4e49: int a[5]; \u5219\u5bf9\u6570\u7ec4\u4e2d\u9996\u5143\u7d20\u7684\u5730\u5740\u53ef\u4ee5\u8868\u793a\u4e3aa.&a\u4e0d\u5bf9\u5417\uff1f

\u4e0d\u5bf9\u3002\u82e5\u6709\u5b9a\u4e49\uff1aint a[5]\uff0c\u5219a\u6570\u7ec4\u4e2d\u9996\u5143\u7d20\u5730\u5740\u53ef\u4ee5\u8868\u793a\u4e3aa\uff0ca[0]\uff0c*(a+0)\uff0c*a\uff0c&a[0]\u3002

\u6570\u7ec4\u53ca\u6570\u7ec4\u5143\u7d20\u7684\u5730\u5740\u8868\u793a\u4e3a\uff1aa\u662f\u4e8c\u7ef4\u6570\u7ec4\u540d\uff0c\u4e5f\u662f\u4e8c\u7ef4\u6570\u7ec40\u884c\u7684\u9996\u5730\u5740\uff0c\u7b49\u4e8e1000\u3002a\uff3b0\uff3d\u662f\u7b2c\u4e00\u4e2a\u4e00\u7ef4\u6570\u7ec4\u7684\u6570\u7ec4\u540d\u548c\u9996\u5730\u5740\uff0c\u56e0\u6b64\u4e5f\u4e3a1000\u3002

*(a+0)\u6216*a\u662f\u4e0ea[0]\u7b49\u6548\u7684\uff0c\u5b83\u8868\u793a\u4e00\u7ef4\u6570\u7ec4a[0]0\u53f7\u5143\u7d20\u7684\u9996\u5730\u5740\u3002\u4e5f\u4e3a1000\u3002&a[0]\u662f\u4e00\u7ef4\u6570\u7ec4a\u76840\u5217\u5143\u7d20\u9996\u5730\u5740\uff0c\u540c\u6837\u662f1000\u3002\u56e0\u6b64\uff0ca\uff0ca[0]\uff0c*(a+0)\uff0c*a\uff0c&a[0]\u662f\u76f8\u7b49\u7684\u3002\u90fd\u662fa\u6570\u7ec4\u4e2d\u9996\u5143\u7d20\u5730\u5740\u3002

\u6269\u5c55\u8d44\u6599\uff1a
a\u8868\u793a\u6570\u7ec4\u540d\uff0c\u4e5f\u4ee3\u8868\u6570\u7ec4\u9996\u5730\u5740\u3002\u6b64\u9996\u5730\u5740\u5e76\u975ea\uff3b0\uff3d\uff3b0\uff3d\u5143\u7d20\u7684\u5730\u5740\uff0c\u800c\u662fa\uff3b0\uff3d\u8fd9\u4e2a\u6570\u7ec4\u7684\u5730\u5740\uff08\u867d\u7136\u5177\u4f53\u6570\u503c\u4e00\u6837\uff0c\u4f46\u610f\u4e49\u4e0d\u540c\uff09\uff1b\u6240\u4ee5\u5bf9\u4e8e2\u4e3a\u6570\u7ec4a\uff3b3\uff3d\uff3b3\uff3d\uff1ba\uff0b1\u8868\u793a\u7684\u662f\u4e00\u7ef4\u6570\u7ec4a\uff3b1\uff3d\u7684\u5730\u5740\uff0c
\uff0a\uff08a\uff0b1\uff09\u8868\u793a\u7684\u662f\u6570\u7ec4a\uff3b1\uff3d\u4e2d\u7b2c\u4e00\u4e2a\u5143\u7d20\u7684\u5730\u5740\uff0c\u6240\u4ee5\uff0a\uff08\uff0a\uff08a\uff0b1\uff09\uff0b2\uff09\u8868\u793a\u6570\u7ec4a\uff3b1\uff3d\u4e2d\u7b2c3\u4e2a\u5143\u7d20\u7684\u503c\u4e5f\u5c31\u76f8\u5f53\u4e8ea\uff3b1\uff3d\uff3b2\uff3d\uff0c\u5176\u503c\u4e3a6\uff1b

*(*(a+i)+j) \u3002
a\u662f\u4e8c\u7ef4\u6570\u7ec4\u540d\uff0c\u4e5f\u662f\u4e8c\u7ef4\u6570\u7ec40\u884c\u7684\u9996\u5730\u5740\u3002a[0]\u662f\u7b2c\u4e00\u4e2a\u4e00\u7ef4\u6570\u7ec4\u7684\u6570\u7ec4\u540d\u548c\u9996\u5730\u5740*(a+0)\u6216*a\u662f\u4e0ea[0]\u7b49\u6548\u7684\uff0c\u5b83\u8868\u793a\u4e00\u7ef4\u6570\u7ec4a[0]0\u53f7\u5143\u7d20\u7684\u9996\u5730\u5740\u3002&a[0][0]\u662f\u4e8c\u7ef4\u6570\u7ec4a\u76840\u884c0\u5217\u5143\u7d20\u9996\u5730\u5740\u3002
\u540c\u7406\uff0ca+1\u662f\u4e8c\u7ef4\u6570\u7ec41\u884c\u7684\u9996\u5730\u5740\uff0c\u7531\u6b64\u53ef\u5f97\u51fa\uff1aa+i\uff0ca[i]\uff0c*(a+i)\uff0c&a[i][0]\u662f\u7b49\u540c\u7684\u3002\u6b64\u5916\uff0c&a[i]\u548ca[i]\u4e5f\u662f\u7b49\u540c\u7684\u3002
\u53e6\u5916\uff0ca[0]\u4e5f\u53ef\u4ee5\u770b\u6210\u662fa[0]+0\u662f\u4e00\u7ef4\u6570\u7ec4a[0]\u76840\u53f7\u5143\u7d20\u7684\u9996\u5730\u5740\uff0c\u800ca[0]+1\u5219\u662fa[0]\u76841\u53f7\u5143\u7d20\u9996\u5730\u5740\uff0c\u7531\u6b64\u53ef\u5f97\u51faa[i]+j\u5219\u662f\u4e00\u7ef4\u6570\u7ec4a[i]\u7684j\u53f7\u5143\u7d20\u9996\u5730\u5740\uff0c\u5b83\u7b49\u4e8e&a[i][j]\u3002
\u7531a[i]=*(a+i)\u5f97a[i]+j=*(a+i)+j\uff0c\u7531\u4e8e*(a+i)+j\u662f\u4e8c\u7ef4\u6570\u7ec4a\u7684i\u884cj\u5217\u5143\u7d20\u7684\u9996\u5730\u5740\u3002\u56e0\u6b64\uff0c\u8be5\u5143\u7d20\u7684\u503c\u7b49\u4e8e*(*(a+i)+j)\u3002

\u6269\u5c55\u8d44\u6599\uff1a
\u4e24\u4e2a\u5730\u65b9\u8981\u6ce8\u610f\uff1a
1\u3001\u5728\u7a0b\u5e8f\u58f0\u660e\u53d8\u91cf\u7684\u65f6\u5019\u7684*\uff0c\u53ea\u662f\u8868\u660e\u201c\u5b83\u662f\u4e00\u4e2a\u65e0\u7b26\u53f7\u6574\u6570\uff0c\u8fd9\u4e2a\u6574\u6570\u6307\u5411\u67d0\u4e2a\u5185\u5b58\u5730\u5740\uff0c\u4e00\u6b21\u8bbf\u95eesizeof(type)\u957f\u5ea6\u201d\u3002\u8fd9\u70b9\u4e0d\u8981\u548c(*)\u64cd\u4f5c\u7b26\u6df7\u6dc6\uff1b
\u5728C++\u7a0b\u5e8f\u58f0\u660e\u53d8\u91cf\u7684\u65f6\u5019\u7684&\uff0c\u53ea\u662f\u8868\u660e\u201c\u5b83\u662f\u4e00\u4e2a\u5f15\u7528\uff0c\u8fd9\u4e2a\u5f15\u7528\u58f0\u660e\u65f6\u4e0d\u5f00\u8f9f\u65b0\u7a7a\u95f4\uff0c\u5b83\u5728\u5185\u5b58\u5206\u914d\u8868\u52a0\u5165\u65b0\u7684\u4e00\u884c\uff0c\u8be5\u884c\u5185\u5b58\u5730\u5740\u7b49\u4e8e\u548c\u8c03\u7528\u65f6\u4f20\u5165\u7684\u5bf9\u5e94\u53c2\u6570\u5185\u5b58\u5730\u5740\u201d\u3002
\u8fd9\u70b9\u4e0d\u8981\u548c(*)\u58f0\u660e\u7b26\uff0c(&)\u64cd\u4f5c\u7b26\u6df7\u6dc6\u3002
\u53c2\u8003\u8d44\u6599\uff1a
\u767e\u5ea6\u767e\u79d1-\u6570\u7ec4\u6307\u9488
\u767e\u5ea6\u767e\u79d1-\u6307\u9488

*(*(a+i)+j) 。

a是二维数组名,也是二维数组0行的首地址。a[0]是第一个一维数组的数组名和首地址*(a+0)或*a是与a[0]等效的,它表示一维数组a[0]0号元素的首地址。&a[0][0]是二维数组a的0行0列元素首地址。

同理,a+1是二维数组1行的首地址,由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。此外,&a[i]和a[i]也是等同的。

另外,a[0]也可以看成是a[0]+0是一维数组a[0]的0号元素的首地址,而a[0]+1则是a[0]的1号元素首地址,由此可得出a[i]+j则是一维数组a[i]的j号元素首地址,它等于&a[i][j]。

由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由于*(a+i)+j是二维数组a的i行j列元素的首地址。因此,该元素的值等于*(*(a+i)+j)。

扩展资料:

两个地方要注意: 

1、在程序声明变量的时候的*,只是表明“它是一个无符号整数,这个整数指向某个内存地址,一次访问sizeof(type)长度”。这点不要和(*)操作符混淆;

在C++程序声明变量的时候的&,只是表明“它是一个引用,这个引用声明时不开辟新空间,它在内存分配表加入新的一行,该行内存地址等于和调用时传入的对应参数内存地址”。

这点不要和(*)声明符,(&)操作符混淆。

参考资料:

百度百科-数组指针

百度百科-指针



元素地址的正确表示

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