主调函数与被调函数之间的数据传递

        在调用函数时,大多数情况下,主调函数都需要将有关数据传递给被调函数。这就是有参函数。在定义函数时指定的用来接收从主调函数传递过来的值的变量称为形参变量,简称形参,在主调函数的调用函数表达式中,函数名后面圆括号中的每一个参数表达式为一个实际参数,简称实参

        总之,主调函数通过将实参表达式的值赋给被调函数的形参变量来完成从主调函数到被调函数的数据传送。被调函数通过 return 语句将被调函数运算的结果数据回传给主调函数

#include<stdio.h>
float value(float x,float y)//形参为浮点型变量x、y 
{return x*y;//返回函数值x*y 
}
int main()
{float weight,price,je;printf("请输入毛重量和单价:");scanf("%f%f",&weight,&price);je=value(weight-0.5,price);//实参分别为weight-0.5和price printf("金额=%.2f元\n",je);return 0;
}

注意:

  • 实参是表达式,可以是常量、变量、函数值等任意类型的表达式的特殊形式。
  • 形参变量的存储空间是在函数被调用时才分配的。函数调用结束是,形参所开辟的临时存储区也被释放。
  • 值传递的特点是及时实参是变量,函数中对实参的操作也不会影响到主调函数中的实参变量,因为形参和实参是完全独立的。除了值传递,还有地址传递,地址传递中值的变化则会影响到主调函数中的值(因为他们使用的是同一个存储单元)。

 

#include<stdio.h>
void sort(int x,int y)
{int z;printf("第二次输出:x=%d,y=%d\n",x,y);if(x>y){z=x;x=y;y=z;}printf("第三次输出:x=%d,y=%d\n",x,y);
}
int main()
{int a,b;scanf("%d%d",&a,&b);printf("第一次输出:a=%d,b=%d\n",a,b);sort(a,b); printf("第四次输出:a=%d,b=%d\n",a,b);return 0;
}

 运行过程中,各变量的存储单元分配及其取值变化过程:

  •  a:声明了变量a,b,此时还未调用sort函数,因此只给a,b分配了存储单元
  • 调用sort函数后,此时x和y分配存储单元,并将值传递给x和y,注意此时的存储单元是不同的,同时还给z分配存储单元
  • 执行if语句后,满足a>b则x和y进行交换,但是a和b未进行交换
  • 最后一次输出a和b的值与第一次相同

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/59056.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始:构建您自己的直播带货软件开发计划

1. 确定目标和需求 在开始开发之前&#xff0c;您需要明确您的目标和需求。考虑以下问题&#xff1a; 您的直播带货软件是面向哪个市场和用户群体&#xff1f; 您的软件需要支持哪些主要功能&#xff0c;如实时视频直播、商品展示、购买支付、实时互动等&#xff1f; 您是否需…

访问者模式(Visitor)

访问者模式是一种行为设计模式&#xff0c;可封装一些作用于当前数据结构的各元素的操作&#xff0c;它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。 Visitor is a behavior design pattern that encapsulates some operations that act on the elements of t…

现代C++中的从头开始深度学习:【4/8】梯度下降

一、说明 在本系列中&#xff0c;我们将学习如何仅使用普通和现代C编写必须知道的深度学习算法&#xff0c;例如卷积、反向传播、激活函数、优化器、深度神经网络等。 在这个故事中&#xff0c;我们将通过引入梯度下降算法来介绍数据中 2D 卷积核的拟合。我们将使用卷积和上一个…

【Matplotlib】一文搞定Matplotlib绘图配置(大三学长的万字笔记)

文章目录 一、Matplotlib介绍1 - 介绍2 - 安装 二、基本配置1 - 中文配置2 - 查看字体库3 - 基本绘图4 - 线样式和颜色 三、画布配置1 - 基本配置2 - 多图绘制 | 同一画布&#xff08;重叠&#xff09;3 - 多图绘制 | 多个画布4 - 多图绘制 | 同一画布&#xff08;子图&#xf…

嵌入式开发实用工具——QFSViewer

嵌入式开发实用工具——QFSViewer 介绍 今天给大家推荐个我个人业余时间开发的一个嵌入式开发实用工具——QFSViewer&#xff0c;这个工具主要是用来加载查看各种嵌入式常用的文件系统映像&#xff0c;目前支持JFSS2、Fat32、Fat16、Fat12、exFat、Ext2、Ext3、Ext4等文件系统…

mysql自增主键不连续情况分析

1.唯一键冲突 比如increnment_test中已经存在了co1为3的记录,当再插入col1为3的记录时,就会出现主键不唯一错误,但此时自增主键已经1,所以会发生主键不连续情况 DROP TABLE IF EXISTS increnment_test; CREATE TABLE increnment_test (id int(0) NOT NULL AUTO_INCREMENT,col…

音视频技术开发周刊 | 305

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 大神回归学界&#xff1a;何恺明宣布加入 MIT 「作为一位 FAIR 研究科学家&#xff0c;我将于 2024 年加入麻省理工学院&#xff08;MIT&#xff09;电气工程与计算机科学…

适配器模式(C++)

定义 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 应用场景 在软件系统中&#xff0c;由于应用环境的变化&#xff0c;常常需要将“一些现存的对象 ”放在新的环境中应用&#xff0c;但是新环境要求…

【iOS】RunLoop

前言-什么是RunLoop&#xff1f; 什么是RunLoop? 跑圈&#xff1f;字面上理解确实是这样的。 Apple官方文档这样解释RunLoop RunLoop是与线程息息相关的基本结构的一部分。RunLoop是一个调度任务和处理任务的事件循环。RunLoop的目的是为了在有工作的时候让线程忙起来&#…

【如何构建自己的基于Arduino的Scara 机器人】

【如何构建自己的基于Arduino的Scara 机器人】 1. 概述2. Scara机器人3D模型3. 3D打印机器人零件4. 组装机器人5. SCARA机器人电路图6. 完成装配7. SCARA机器人的工作原理8. 对 SCARA 机器人进行编程 – Arduino 和处理代码9. 总结在本教程中,我们将学习如何构建基于 Arduino …

小红书数据分析丨现实版模拟人生,这届网友热衷于“云开店”?

近期&#xff0c;小红书出现的一个神秘的热心群体&#xff0c;他们经常活跃在各种小店店主发布的求助帖评论区中&#xff0c;积极地帮助店主出谋划策&#xff0c;寻找小店经营的优化之道&#xff0c;成功帮助小店成功转亏为盈&#xff01;江湖人称一一云股东。小红书话题#爱上帮…

01《Detecting Software Attacks on Embedded IoT Devices》随笔

2023.08.05 今天读的是一篇博士论文 论文传送门&#xff1a;Detecting Software Attacks on Embedded IoT Devices 看了很长时间&#xff0c;发现有一百多页&#xff0c;没看完&#xff0c;没看到怎么实现的。 摘要 联网设备的增加使得嵌入式设备成为各种网络攻击的诱人目标&…