面试题答案
一键面试#include <stdio.h>
int main() {
int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int (*p)[4] = arr; // 定义指向包含4个元素的一维数组的指针
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
printf("%d ", *(*(p + i) + j));
}
printf("\n");
}
return 0;
}
在上述代码中:
- 定义了一个指向包含4个
int
类型元素的一维数组的指针p
,并让它指向二维数组arr
。 - 通过两层循环,外层循环遍历二维数组的行,内层循环遍历二维数组的列。
- 使用
*(*(p + i) + j)
这种指针形式来访问二维数组中的每个元素,并进行打印。*(p + i)
指向第i
行,*(*(p + i) + j)
则指向第i
行第j
列的元素。