📜  门| GATE CS 2019 |问题 33

📅  最后修改于: 2021-09-25 04:55:33             🧑  作者: 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;
}

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

#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)是正确的。

这个问题的测验