✏️ 纠错
第 228 题 / 共 301 题
第2题 下面的函数接收一个3行4列的二维数组并输出其中元素,则横线上不能填写( )。
void printArray(______) {
    for (int i = 0; i < 3; ++i)
        for (int j = 0; j < 4; ++j)
            std::cout << arr[i][j] << " ";
}
📝 题目解析

【考纲知识点】二维数组作为函数参数的传递方式、指针与数组的关系

【正确答案】D

【题目解析】

选项A,int arr[3][4] 直接定义了一个3行4列的二维数组作为参数,是合法的。

选项B,int arr[][4] 省略了第一维的大小,但是第二维大小明确为4,编译器可以根据传入的数组自动确定第一维大小,也是合法的。

选项C,int (*arr)[4] 是一个指向包含4个整数的数组的指针,也可以用来表示二维数组,是合法的。

选项D,int** arr 是一个指向指针的指针,它不能直接表示一个二维数组,因为二维数组在内存中是连续存储的,而int** arr 需要先分配一个指针数组,再为每个指针分配内存,与本题中要接收的二维数组形式不匹配,所以不能填写。

本题的正确答案为D。