以二维数组 int arr[4][2]={1,2,3,4,5,6,7,8};为例
-
arr即是数组名,也是指针(首元素的地址),它是一个内含2个int类型值的数组的地址,即指向一个8字节的数据对象。
-
可以认为arr即是本身二维数组的数组名,也是这个二维数组中包含的一个一维数组的数组名,其中这个一维数组就是每一行的数据,即int arr[4][2]={ { 1,2},{3,4},{5,6},{7,8} } 所以因为第一行包括2个int类型值,而且它又是其中这个一维数组的数组名(第一行又是这个一维数组的首元素),所以arr指向一个8字节的数据对象。
-
即arr+1,它所指向的地址加8字节
-
*arr是其中一维数组的地址(即&arr[0][0])
-
arr[0]本身是一个内含俩个整数的数组,一提到arr[0],它的作用对象就到了二维数组中的一维数组(此时这里提到的一维数组与上面提到的不同,这里的一维数组指二维数组中的第一行,独自成为一个新的一维数组,即arr[0]={1,2}),因为是一维数组,所以arr[0]指向的对象只占用了一个int大小,即arr[0]+1,它所指向的地址加4。
-
arr==arr[0]
-
((arr+2)),即为二维数组的第三个元素,即{5,6}的首元素。