📜  C测验– 110 |问题5

📅  最后修改于: 2021-05-25 23:12:23             🧑  作者: Mango

在C语言中,可以将int的一维数组定义如下,并且两者都是正确的。

int array1D[4] = {1,2,3,4};
int array1D[] = {1,2,3,4};

但是给定2D数组的以下定义(以及初始化)

int array2D[2][4] = {1,2,3,4,5,6,7,8}; /* (i) */
int array2D[][4] = {1,2,3,4,5,6,7,8}; /* (ii) */
int array2D[2][] = {1,2,3,4,5,6,7,8}; /* (iii) */
int array2D[][] = {1,2,3,4,5,6,7,8}; /* (iv) */

选择正确的语句。
(A)只有(i)是正确的。
(B)只有(i)和(ii)是正确的。
(C)只有(i),(ii)和(iii)是正确的。
(D)所有(i),(ii),(iii)和(iv)都是正确的。答案: (B)
说明:首先,C语言没有为2D数组或多维数组提供任何真正的支持。通过数组的一维数组模拟2D数组。所以int的2D数组实际上是int的1D数组。另一个重要的一点是,数组大小可以从其初始化中得出,但这仅适用于第一维。这意味着2D数组需要具有2维的显式大小。类似地,对于3D阵列,第2维和第3维需要具有明确的大小。这就是为什么只有(i)和(ii)是正确的。但是array2D [2] []和array2D [] []的类型不完整,因为即使从初始化也无法得出它们的完整大小。
这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。