对于声明为as- int arr [4] [3] [2]
的整数数组&arr
arr
arr[0]
&arr
arr[0][0]
&arr[0][0]
arr[0][0][0]
&arr[0][0][0]
我的分析:
arr
: - 指向三维数组的基地址&arr
: - 与arr一样,数组名称不会分解arr[0]
: - 指向3维数组的第一个元素的指针,该数组是指向2d数组基址的指针arr[0][0]
:指针指向第一个3D数组的第一个2D数组的第一个单元格的第一个元素。我在考虑正确的线路吗? 其中哪些是指向同一件事?
答案 0 :(得分:1)
int arr[4][3][2]
表示arr
为3D
数组,由four 2D
数组组成,每个2D
数组包含three 1D
数组且每个1D array
数组拥有two-two
元素。
让我们有一个arr
的图形表示:假设arr
基地址为0x100
。
arr[0][0][0] arr[1][0][0] arr[2][0][0] arr[3][0][0]
0x100 0x104 0x108 0x112 0x116 0x120 0x124 0x128 0x132 0x136 0x140 0x144 0x148 0x152 0x156 0x160 <--1D array elements
| | | | | | | | | | | | | | | |
---------- -------- ---------- ---------- ---------- ----------- ------------ ---------------
| | | | | | | |
arr[0][0] arr[0][1] arr[1][0] arr[1][1] arr[2][0] arr[2][1] arr[3][0] arr[3][1]
0x100 0x108 0x116 0x124 0x132 0x140 0x148 0x156 <---1D array
| | | | | | | |
------------------------ ------------------------- ------------------------- ------------------------
| | | |
arr[0] arr[1] arr[2] arr[3] <---2D array
0x100 0x116 0x132 0x148
| | | |
-------------------------------------------------------------------------------------------------------------------------
|
arr <---3D array
0x100
如果您分析上图,您会发现arr
,arr[0]
,arr[0][0]
和&arr[0][0][0]
都是same
,所有人都持有{ {1}}基地址为arr
。
请注意,0x100
为arr[0][0][0]
,但value
为第一个元素&arr[0][0][0]
,因此两者均为address
。
different
和arr
也&arr
,因为arr名称本身的地址是通过放置&amp;没有任何区别。
same
和arr[0][0]
也相同,因为&arr[0][0]
是一维数组,即arr[0][0]
指向名为single pointer
和arr[0][0][0]
的两个元素。
如
arr[0][0][1]