可以说一下*p,和p[1]是怎么算出来的吗?

#include <stdio.h>
int *f(int *s)
{
s += 1;
*s += 6;
*s-- += 7;
return s;
}
main()
{ int a[9]={1,2,3,4,5,6,7,8,9},*p;
p=f(a+5)
printf (a[0],a[1],*p,p[1]);
}
答案:输出1 2 6 20
代码输出后面有4个%d,但是因为问题中不能有重复的符号和字母,就没有写

a+5 对应的是 a[5]
传参过去 得到的也就是a[5]的值6
6+1 = 7
7 + 6 = 13
13 + 7 =20
然后输出20。
可能看到这里,会想问它不还有--的吗?那个--位于其后,所以会先输出20。

希望对题主有所帮助!可以的话,帮忙点个采纳!

指针的概念,注释如下,供参考:

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

    return 0;
}

在*f()里传入a[5]指针,然后对a[6]的值进行一系列骚操作后,返回a[5]的指针。
传入a[5]的指针,然后指针+1,s指向a[6]。
*s+=6,则a[6]=a[6]+6=13。
s--+=7,可理解为s+=7;s--;则a[6]=a[6]+7=20,s指向a[5]值为6。回到p指针指向的是a[5]=6,p[1]指向a[6]=20。如果我说的不错此时的a 数组应该是[1,2,3,4,5,6,20,8,9]。望采纳