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

答案是a....为什么呢。详解!

在调用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);
}
注意比较吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-11
指针的使用问题。
void point(char *p) {p+=3;}
point 函数的形参是指针,则在函数内可以修改指针所指的值,但无法修改指针自身。指针执行a,可以把a修改成其他的值,但无法改变指针自己,其永远执行b的首地址。

参考资料:C语言手册

第2个回答  2019-10-15
输出结果是a
函数返回*p也就是字母d-->point(p)
但是问的是*p当函数返回值之后里面所有的东西都释放了p还是指向之前的字母a
如果想得到字母d有2个办法
1
p+=3改成*p+=3
2
printf("c\n",*p)改成printf("c\n",point(p))
相似回答
大家正在搜