PUERTA | GATE-CS-2015 (Conjunto 3) | Pregunta 40

Considere los siguientes dos segmentos de código C. Y y X son arrays unidimensionales y bidimensionales de tamaño n y n × n respectivamente, donde 2 ≤ n ≤ 10. Suponga que en ambos segmentos de código, los elementos de Y se inicializan en 0 y cada elemento X[i][j] de la array X se inicializa en i + j. Además, suponga que cuando se almacenan en la memoria principal, todos los elementos de X están en el mismo marco de página de la memoria principal.

Code segment 1:
  // initialize elements of Y to 0
  // initialize elements X[i][j] of X to i+j
  for (i = 0; i < n; i++)
      y[i] + = X[0][i];
  
  
Code segment 2:
  // initialize elements of Y to 0
  // initialize elements X[i][j] of X to i+j
  for (i = 0; i < n; i++)
      y[i] + = X[i][0];

¿Cuál de las siguientes afirmaciones es/son correctas?

S1: Final contents of array Y will be same in both code segments.
S2: Elements of array X accessed inside the for loop shown in 
    code segment 1 are contiguous in main memory.
S3: Elements of array X accessed inside the for loop shown in 
    code segment 2 are contiguous in main memory. 

(A) Solo S2 es correcto
(B) Solo S3 es correcto
(C) Solo S1 y S2 son correctos
(D) Solo S1 y S3 son correctos

Respuesta: (C)
Explicación: En C, las arrays 2D se almacenan en el orden principal de las filas . Por lo tanto, S2 es correcto, pero S3 no es correcto.
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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *