面试题答案
一键面试- 通过指针访问二维数组元素:
- 对于二维数组
int arr[3][4];
,arr
本身就是一个指向包含4个int
类型元素的数组的指针。 - 可以使用指针运算来访问每个元素。例如,
*(arr + i) + j
指向arr[i][j]
的地址,*(*(arr + i) + j)
就是arr[i][j]
的值。
- 对于二维数组
- 编写遍历并打印的函数:
#include <stdio.h>
void printArray(int (*arr)[4], int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", *(*(arr + i) + j));
}
printf("\n");
}
}
你可以这样调用这个函数:
int main() {
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
printArray(arr, 3, 4);
return 0;
}
在上述代码中:
printArray
函数接收一个指向包含4个int
类型元素的数组的指针arr
,以及数组的行数rows
和列数cols
。- 使用两层循环遍历二维数组,并通过指针运算
*(*(arr + i) + j)
访问并打印每个元素。 - 在
main
函数中,定义并初始化二维数组arr
,然后调用printArray
函数打印数组内容。