#include "stdio.h" void point(char *p) {p+=3;} main() { char b[4]={'a','b','c','d'},*p=b; point(p);

问题描述:

#include "stdio.h" void point(char *p) {p+=3;} main() { char b[4]={'a','b','c','d'},*p=b; point(p);
为什么呢.

在调用point(p)时候,把p的地址传给了子函数,在子函数中的p加上了3,在子函数中的*p=c,函数调用结束后,对主函数中的 p 值没有影响,因为形参不改变p值,所以结果还是a
如果写成这样结果就是d
#include "stdio.h"
void point(char **p)
{*p+=3;}
void main()
{
char b[4]={'a','b','c','d'},*p=b;
point(&p);
printf("%c\n",*p);
}
注意比较吧