【C语言 形参,实参】傻傻分不清楚?你对函数的调用知多少?

cocowy的编程之旅

前言

曾几何时,一直对函数里参数的调用搞不清楚,形参还是实参?调用函数后为何只能返回值?
这些问题在我初学C语言的时候一直感到很迷惑,故记之已给后来者避坑。

首先我们看一段这样的代码:

void swap(int a,int b);
int main()
{
int a=5;
int b=6;

swap(a,b);
printf("a=%d b=%d",a,b);
return 0}

void swap(int a,int b){
int t=a;
a=b;
b=t;
}


在这里插入图片描述
大家看到结果代码运行结果后自然会产生疑问,我不是通过调用swap函数进行参数间的替换了嘛?为什么运行结果依旧是原来主函数定义的a,b值呢?

其实这是因为C语言的结构特性决定的,容我慢慢道来。
这是因为定义函数的时候a,b为形参不参与计算,而在主函数调用其他函数时a,b参数的值传递给了swap函数。
值得注意的是,a,b函数在swap函数调用后并没有改变,因为每个函数都有自己的变量空间参数也位于这个独立的空间中,和其他参数没有任何关系。正是因为如此,在swap函数里面发生的任何事情都与主函数a,b两个参数无关。而且在swap函数里面没有返回值(return)传递给主函数,导致两个函数中的参数发生的关系互不影响。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值