注意指针跳转问题,p[1]与a[1]出现的区别

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

 

 

答案:1,9,9,4

指针p指向初始值为1、2、3、4、5的数组,并通过函数调用传递给指针s;语句“s+=1”将指针后移,此时指针s指向的值为2、3、4、5;s[1]+=6即s[1]=s[1]+6=3+6=9;*s++ +=7即*s=*s+7=2+7=9。f函数执行结束后,指针s指向的值为9、4,而数组a的值变为{1,9,9,4,5},故输出结果为1,9,9,4。

 

posted @ 2020-07-09 19:19  attendere  阅读(415)  评论(0编辑  收藏  举报