在C语言中,int的1D数组可以定义如下,两者都是正确的。
null
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数组实际上是一个1D数组。另一个重要的点是数组大小可以从它的初始化中得到,但这只适用于第一维。这意味着2D数组需要有一个第二维度的显式大小。类似地,对于3D阵列,第二和第三维度需要有明确的大小。这就是为什么只有(i)和(ii)是正确的。但是array2D[2][]和array2D[]]是不完整的类型,因为它们的完整大小甚至不能从初始化中派生出来。 这个问题的小测验
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END