题目
以下程序的输出结果是____。main()(int arr[]={30,25,20,15,10,5),*p=arr;p++;printf("%dn",*(p+3));}正确答案10你的答案未作答
以下程序的输出结果是____。main()
{int arr[]={30,25,20,15,10,5},*p=arr;p++;printf("%d\n",*(p+3));}
正确答案
10
你的答案
未作答
题目解答
答案
程序中,`p` 初始指向 `arr[0]`(30)。执行 `p++` 后,`p` 指向 `arr[1]`(25)。`p + 3` 指向 `arr[4]`(10),因此 `*(p + 3)` 的值为 `10`。
答案:10
解析
考查要点:本题主要考查指针与数组的关系以及指针运算的理解。
解题核心思路:
- 明确指针初始位置:指针
p初始指向数组arr的第一个元素。 - 指针自增操作:
p++会使指针移动到下一个元素的位置。 - 指针偏移计算:通过
p+3计算指针偏移后的指向位置,并取该位置的值。
关键点:
- 指针与数组索引的对应关系:指针每移动一步对应数组索引加1。
- 指针运算的单位:
int类型指针每步移动sizeof(int)字节(通常为4字节)。
-
数组初始化
数组arr的元素依次为:arr[0] = 30, arr[1] = 25, arr[2] = 20, arr[3] = 15, arr[4] = 10, arr[5] = 5 -
指针初始位置
int *p = arr;使p初始指向arr[0](值为30)。 -
指针自增操作
p++使指针移动到下一个元素,此时p指向arr[1](值为25)。 -
计算
p+3的指向p当前指向arr[1],p+3表示从arr[1]开始向后移动3个元素。- 对应数组索引为
1 + 3 = 4,即arr[4](值为10)。
-
取值并输出
*(p+3)表示取p+3指向的元素值,即arr[4]的值10。