输出结果 能否告知下过程怎么运算

  • 能说明下过程吗?4.以下程序运行后,输出结果是:

#include<stdio.h>

void main(

{

int a[5]={1,2,3,4,5};

int*p=a; printf("%d”, *++p); printf("%d,",*p++);

printf("%d",a[2]);

img


首先前面 int* p = a; 是将指针 p 指向了数组 a 的首地址,也就是 a[0],所以 p 一开始的值是 a[0] = 1


++p 表示 p 在参与其他运算之前 p 的 地址先指向 p 的下一个,也就是 a[1] = 2;p++ 表示 p 在参与其他运算之后 p 的 地址先指向 p 的下一个,也就是 a[1] = 2;
前两个输出语句,因为 p 在这里并没有其他运算,所以它们的值都是 a[1] = 2
而最后一个输出语句,只是考查数组的索引而已,a[2] 就是 数组 a 的第3个元素,也就是 3 ,因为数组的索引是从0开始计算的
有帮助的话请采纳一下呀