面试题答案
一键面试arr
- 类型:
int (*)[4]
,这是一个指向含有4个int
元素的一维数组的指针。 - 指针关系:它是二维数组名,代表整个二维数组的起始地址。
- 指向的内存位置:指向二维数组首元素
arr[0][0]
所在的内存位置,即二维数组的起始地址。
- 类型:
*arr
- 类型:
int *
,这是一个指向int
类型的指针。 - 指针关系:
*arr
等价于arr[0]
,由于数组名在表达式中会被转换为指针,arr
指向的是一个含有4个int
元素的数组,对其解引用得到的是这个数组的首元素,也就是一个int
类型的指针。 - 指向的内存位置:指向二维数组第一行的首元素
arr[0][0]
的内存位置。
- 类型:
arr[0]
- 类型:
int *
,同样是一个指向int
类型的指针。 - 指针关系:
arr[0]
是二维数组第一行的数组名,在表达式中数组名会被转换为指针,它指向第一行数组的首元素。 - 指向的内存位置:指向二维数组第一行的首元素
arr[0][0]
的内存位置。
- 类型:
总结来说,arr
指向整个二维数组的起始位置,*arr
和arr[0]
都指向二维数组第一行的首元素arr[0][0]
的位置,只不过arr
的类型和*arr
、arr[0]
不同。