结果为什么是4,3呢求解析过程

#include <stdio.h>
void main()
{
int a[5]={1,3,5,7,9},p=a;
(
++p)=2;
(*p)++;
}
printf("%d,%d", a[0]+a[1],*p);

你以后发代码的时候,用平台的插入代码模块,要不然你发的代码的号会被忽略,容易造成我们理解不清。我给你解释一下这个吧,p表示将数组a的初始地址赋给p,则p就表示a【0【,然后自加运算后,表示a【1】被修改为2,然后*p)++表示a【1】的值加一,也就是3,然后输出的时候,就是4,3。你应该是指针的相关运算和定义没理解清楚。如果有不清楚的可以私聊我哦。😁

*p=a此时p指向a[0]

*(++p)=2;修改a[1]=2

(*p)++;修改a[1]=3

a[0]+a[1]也就是1+3 = 4

*pp指向a[1],也就是3

望采纳,谢谢

你这程序确定能运行吗?


#include <stdio.h>
int main() {
    int a[5] = { 1,3,5,7,9 }, * p = a;//*p=a即p=&a[0]
    *(++p) = 2;//++p(p=&a[1]) *p=2 a[1]=2;
    (*p)++;//*p即a[1] a[1]++ a[1]=3;
    printf("%d,%d", a[0] + a[1], *p);
    return 0;
}