关于函数调用的一点小问题

shiguojie19892 2012-11-14 04:33:27
如下:
void是没有返回值的 为什么调用后会把形参的指针返回到main呢?
/******************************************************/
void main(void)
{
int x;
x=20;
change (&x);
printf("%d\n",x);
}

void change (int *p)
{
*p = *p +10;
}
...全文
79 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
oQinFeng1234 2012-11-14
  • 打赏
  • 举报
回复
这就是传址吧,分清楚传址,传值,引用几个调用就好了吧!
gaochizhen33 2012-11-14
  • 打赏
  • 举报
回复
这个跟返回值没关系吧。你修改的是指定地址上的内容,它才不管是被调用函数还是main函数。
buyong 2012-11-14
  • 打赏
  • 举报
回复
通过改变指针p所指向的内容
叁叁玖玖 2012-11-14
  • 打赏
  • 举报
回复
LZ main函数中 传的是实参地址,因此在change 函数内部,*p 指针指向实参地址,修改的实际就是x的值,这与返回值没有丝毫关系
BYD123 2012-11-14
  • 打赏
  • 举报
回复
传的是地址,具体来说在栈里。
图灵狗 2012-11-14
  • 打赏
  • 举报
回复
正解,例如变量x的地址为0x20000000的话,change函数中的*p = *p + 10相当于是把0x20000000地址中的数值+10,也就是等同于修改了变量x的值了。
引用 1 楼 breakfisher 的回复:
这个跟返回值没有关系,因为你实参传进去的是 &x, 这是一个地址,是在main函数内定义和分配的。 在change内改变的是存储在该地址的值
mujiok2003 2012-11-14
  • 打赏
  • 举报
回复
除了返回值, 指针,引用,全局变量等都可以做输出参数。
breakfisher 2012-11-14
  • 打赏
  • 举报
回复
这个跟返回值没有关系,因为你实参传进去的是 &x, 这是一个地址,是在main函数内定义和分配的。 在change内改变的是存储在该地址的值

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧