考虑下面的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)是正确的。
这个问题的测验