📜  门| GATE CS 2019 |简体中文第33章

📅  最后修改于: 2021-06-29 22:13:42             🧑  作者: Mango

考虑下面的C程序:

#include
 int main(){
  int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 5}, *ip = arr + 4;
  
  printf("%d\n", ip[1]);
  
  return 0;
}

程序执行时将显示的数字是_________。
(A) 6
(B) 5
(C) 4
(四)分割错误答案: (A)
解释:

#include
 int main(){
  int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 5}, *ip = arr + 4;
  
  printf("%d\n", ip[1]);
  
  return 0;
}

请注意,数组的索引始终在C中从0开始。

最初,ip指针指向(arr + 4)或跳过前4个位置。

现在在printf系统调用中,还有1个位置要跳过,因此它将指向(arr + 5)或从开始处跳过5个位置:

因此,printf的将在6位置,即打印值,6将打印。

因此,选项(A)是正确的。
这个问题的测验