C 以下符号指向什么?
对于声明为-int arr[4][3][2]的整数数组C 以下符号指向什么?,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,对于声明为-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]:-指向三维数组第一个元素的指针,该元素是指向二维数组基址的指针 arr[0][0]:指向第一个3D数组的第一个2D数组的第一个单元格的第一个元素的指针 我的思路正确
&arr
arr
arr[0]
&arr
arr[0][0]
&arr[0][0]
arr[0][0][0]
&arr[0][0][0]
我的分析是:
:-指向三维数组的基址arr
:-与arr相同,这里数组名不分解&arr
:-指向三维数组第一个元素的指针,该元素是指向二维数组基址的指针arr[0]
:指向第一个3D数组的第一个2D数组的第一个单元格的第一个元素的指针arr[0][0]
其中哪些指向同一事物?
int-arr[4][3][2]
意思是arr
是3D
数组,由4个2D
数组组成,每个2D
数组有3个1D
数组,每个1D数组有2个元素
让我们用图形表示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[0][0] == & arr[0][0]
*( *(arr+0) + 0) == & *( *(arr+0) + 0)
*( *(0x100 + 0x16) + 0) == & *( *(0x100 + 0x16) + 0)
*( *(0x100)) == & *( *(0x100))
*( 0x100) == & *( 0x100)
0x100 == & 0x100
0x100 == 0x100