注意指针跳转问题,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。
只供自己学习参考,方便自己知道做过哪些题目。偶尔会附上别人写的代码(整张截图)供自己学习和对比,若题主不同意,可删