自定义函数无返回值时函数起什么作用

M|W|H 2020-05-19 03:03:38
#include<stdio.h>
int p = 20;
void f(int a)
{
int b;
b = a++;
p += b;
}
int main(void)
{
int a = 1, b = 5;
f(a);
p += b;
printf("%d,%d,%d",a,b,p);
return 0;
}

为什么f()函数没有返回值,却可以改变p变量的值,不是说自定义函数不可以回传数值吗
求助
...全文
650 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_1457346882 2020-05-19
  • 打赏
  • 举报
回复
函数返回值只是根据你的需求来操作,或许是为了简便,或许是为了得到成功与否,但是这些是根据你的需求来的,你可以写没有的,然后只要能完成操作
变量分为局部变量和全局变量,通常函数中使用局部变量,也就是函数中自己定义的,局部变量的生命周期是从函数调用开始到结束,所以如果其他函数有需要就要返回这个变量的值给其他函数中的变量获取,而之后程序结束这个便量会消亡
而你这里的p是定义为全局变量,全局变量生命周期为整个程序运行周期,又可以被所以函数调用,所以这里改了值变量依然存在,不会消亡,而别的变函数又可以直接使用,所以不用返回值,这个函数的作用也就是改变这个变量的值
Q446512799 2020-05-19
  • 打赏
  • 举报
回复
返回值跟改变值没关系啊,你把地址传进去一样也能改变值
棉猴 2020-05-19
  • 打赏
  • 举报
回复
f()函数虽然没有返回值,但是在函数体中对全局变量p进行了修改,这就是f()函数的作用。需要注意的是,虽然f()对形参a也就行了修改,但是实际上并没有改变实参a的值,此时a的值还是1,因此此时f()函数参数的传递方式叫做非引用传递。 对于函数参数的引用传递和非引用传递,请参考 《C++中函数的数组形参》 希望能够帮到您!
5250 2020-05-19
  • 打赏
  • 举报
回复
p是全局变量 哪个函数都可以改

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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