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