news 2026/6/15 6:57:56

C语言的 形参(形式参数) 和 实参(实际参数)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言的 形参(形式参数) 和 实参(实际参数)

1.什么是实参(实际参数)和形参(形式参数)?

形参(形式参数):形参是在函数定义时出现的变量名,用于接收传递给函数的值

只有调用函数时会分配内存单元

形参的作用域:是局部变量,只在函数内部有效,出了函数,形参自动销毁。

实参(实际参数):实参是在函数调用时传递给函数的值或表达式。实参可以是常量

变量,也可以是表达式

下面举个简单的例子:假设我们要获取两个数中的最大值

//x 和 y 为形参 ,只在get_max里有效 int get_max(int x ,int y ) { return (x > y ? x : y); } int main() { int num1 = 0; int num2 = 0; scanf("%d %d", &num1, &num2); int ret = get_max(num1, num2); //num1 num2 为实参 printf("%d\n", ret); //获取两个数的最大值 return 0; }

这里的形参就是xy, 作用域 就是在get_max函数内;

实参num1num2

2.形参和实参的关系是什么?

下面用代码来说明两者的区别。

void swap1(int x, int y) { int temp = 0; temp = x; x = y; y = temp; } int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); printf("交换前:a = %d b = %d\n", a, b); swap1(a, b); printf("交换后:a = %d b = %d\n", a, b); return 0; }

假设我想交换两个数字,但得到结果是:

那么问题在哪里呢,让我们来看下内存。

这是实参形参存放的数值地址

我们可以看到形参的地址和实参的地址是完全不同的,那么也就是说,再怎么修改形参,

实参是不会受到影响的,因为实参形参都有着自己的内存空间

在内存中分布大概是这样分布,都有着独立的空间和地址,调用时只是把实参的值传给了形参

试想:你想要你的大号上分,你却用小号打排位,那么大号自然就不会上分了。

那么问题已经找到了,出在地址的不同上(不同空间)那么我们把实参的地址传过去,问题不就解决了么。这次我们地址传过去。

//地址传递过来,就要用指针接收 void swap2(int * px, int * py) { int temp = 0; temp = *px; *px =*py; //*px *py 通过地址找到实参 a,b *py = temp; } int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); printf("交换前:a = %d b = %d\n", a, b); swap2(&a, &b); //传递a,b的地址 printf("交换后:a = %d b = %d\n", a, b); return 0; }

我们可以看到这次成功。原因:px,py里存的是实参 a,b 的地址 (*px)(*py) 解引用,通过存放的地址找到实参a,b,间接的把 a , b 修改。

那么这次内存又是怎么样的呢,请看画图和图片。

请注意:因为每次程序执行都会重新分配地址,所以和上次的地址不一样。

但我们可以看到px,py存放的是a,b的地址,

请注意:这里我用第一次程序执行时分配的地址,来画图说明。

最后简单总结下实参和形参的关系

1.形式参数是实际参数的一份临时拷贝。

2.对形式参数的修改不会影响实际参数。

好了,到了文章的最后,希望这篇文章能对你有所帮助。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 6:53:51

用遥控器轻松上网:TV Bro电视浏览器让大屏浏览不再困难

用遥控器轻松上网:TV Bro电视浏览器让大屏浏览不再困难 【免费下载链接】tv-bro Simple web browser for android optimized to use with TV remote 项目地址: https://gitcode.com/gh_mirrors/tv/tv-bro 你是否曾经想在客厅的智能电视上浏览网页&#xff0c…

作者头像 李华
网站建设 2026/6/15 6:46:51

别再只刷口语了!工科导师揭秘:电子信息调剂时,他们到底想看什么?

电子信息调剂突围指南:导师视角下的核心竞争力解析每年三月,数以万计的电子信息类考生站在调剂十字路口,而大多数人手握精心打磨的英语自我介绍时,却不知道实验室里的导师们正在快速滑动简历寻找完全不同的关键词。某985高校电子工…

作者头像 李华
网站建设 2026/6/15 6:46:50

别再只重启了!华为ONU光信号丢失(LOSi)告警的三种原因与精准处理流程

华为ONU光信号丢失(LOSi)告警的深度诊断与精准处理指南当用户宽带突然断网,装维工程师的手机响起急促的铃声,屏幕上闪烁的"LOSi"告警往往成为第一现场最常见的敌人。这个看似简单的红色标识背后,可能隐藏着从光纤接头污染到光模块老…

作者头像 李华
网站建设 2026/6/15 6:46:50

BPI-R3 Mini DD 刷回nand原厂系统教程

免责声明⚠️ 警告:刷机有风险,操作需谨慎 刷写 Bootloader(BL2/FIP)、分区表(GPT)和固件系统涉及对硬件底层存储的直接操作。操作不当可能导致: 设备无法启动(变砖)网络…

作者头像 李华
网站建设 2026/6/15 6:41:53

多维聚合操纵:从OLAP立方体到动态分析引擎

1. 这不是简单的“求和平均”,而是多维数据世界的导航术你有没有遇到过这样的场景:销售报表里要同时按“地区产品线季度”三个维度看销售额,还要在每个交叉格子里显示同比变化率、环比变化率、完成率,并且当某地区某产品线某季度的…

作者头像 李华