En C, la array 1D de int se puede definir de la siguiente manera y ambas son correctas.
int array1D[4] = {1,2,3,4}; int array1D[] = {1,2,3,4};
Pero dadas las siguientes definiciones (junto con la inicialización) de arrays 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) */
Elige las afirmaciones correctas.
(A) Sólo (i) es correcta.
(B) Solo (i) y (ii) son correctos.
(C) Solo (i), (ii) y (iii) son correctos.
(D) Todos (i), (ii), (iii) y (iv) son correctos.
Respuesta: (B)
Explicación:En primer lugar, el lenguaje C no proporciona ningún soporte real para arreglos 2D o arreglos multidimensionales. Una array 2D se simula a través de una array 1D de arrays. Entonces, una array 2D de int es en realidad una array 1D de array de int. Otro punto importante es que el tamaño de la array se puede derivar de su inicialización, pero eso solo se aplica a la primera dimensión. Significa que la array 2D debe tener un tamaño explícito de segunda dimensión. De manera similar, para una array 3D, las dimensiones 2 y 3 deben tener un tamaño explícito. Es por eso que solo (i) y (ii) son correctos. Pero array2D[2][] y array2D[][] son de tipo incompleto porque su tamaño completo no puede derivarse ni siquiera de la inicialización.
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA