📜  门| GATE-CS-2015(套装3)|第 40 题

📅  最后修改于: 2021-09-25 06:20:53             🧑  作者: Mango

考虑以下两个 C 代码段。 Y 和 X 分别是大小为 n 和 n × n 的一维和二维数组,其中 2 ≤ n ≤ 10。假设在两个代码段中,Y 的元素都初始化为 0,并且每个元素 X[i][j]数组 X 被初始化为 i + j。进一步假设当存储在主存中时,X 的所有元素都在同一个主存页框中。

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];

以下哪些陈述是/是正确的?

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)只有 S2 是正确的
(B)只有 S3 是正确的
(C)只有 S1 和 S2 是正确的
(D)只有 S1 和 S3 是正确的答案: (C)
说明:在 C 中,二维数组按行主顺序存储。因此,S2 是正确的,但 S3 是不正确的。
这个问题的测验