通过形参和返回值改变主函数的参数

79.找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。 79.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。 #include <stdio.h> #include<string> #define N 5 struct stu{ char id[10]; int score; }; struct stu fun(stu *s){ struct stu sm; int inde 阅读详情

我们知道,调用子函数可以通过形参改变实参的值(传址,归根结底是传值。)。通过子函数返回值也可以达到子函数改变主函数参数的目的。而现在将两种方式结合在一起,通过一个子函数,来实现形参改变实参和返回一个值这两个目的。例子:

#include "iostream"

using namespace std;	//如果头文件是iostream.h则不需要此句

int Change(int *p);

int Change(int b[]);

void main()
{
	int a[] = {1, 2, 3};
	cout<<"before change a[0] is :"<<endl;
	cout<<a[0]<<endl;
	int back;

	back = Change(a);		//获取子函数返回值,同时通过形参改变实参的值

	cout<<"the func change return is :"<<endl;
	cout<<back<<endl;
	cout<<"after change a[0] is :"<<endl;
	cout<<a[0]<<endl;
}

#if 0

int Change(int *p)	//方法一:用指针传址
{
	int c;
	c = *p;
	*p = *(p + 2);
	*(p + 2) = c;
	return 1;
}

#endif


int Change(int b[])		//方法二:用数组名传址(用数组名传递时,将自动转化为指针)
{
	int c;
	c = b[0];
	b[0] = b [2];
	b[2] = c;
	return 1;
}


注:代码中用到调试开关,将0改为1则可以试验第一种方法。
【C语言】连接陷阱探秘(三):形参、实参与返回值 C语言中的形参、实参与返回值在连接过程中存在多种陷阱与缺陷。为了避免这些问题,程序员需要仔细设计函数接口、正确声明和定义函数、谨慎处理外部变量和头文件的使用,并遵循最佳实践来确保程序的正确性和稳定性。 阅读详情

相关推荐

【coze实战】基于Coze的公众号图文自动化生成工作流实战解析

【coze实战】基于Coze的公众号图文自动化生成工作流实战解析

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 1万+

C语言练习篇-6利用指针通过形参传值给主调函数

练习:编写一个函数,其功能是对传送过来的两个浮点数求出和值、两个数相差多大,并通过形参传送回调用函数。void fun(double a, double b, double *ps, double *pd){ *ps = a + b; *pd = (a - b) < 0 ? (- (a - b)) : (a - b); }int main() { double a = 10.6

DH_Fantasy的博客 3939

Ubuntu24.04下Librenms的完整安装与配置指南

本文提供了在Ubuntu 24.04 LTS系统上完整安装与配置LibreNMS网络监控系统的详细指南。内容涵盖系统环境准备、依赖安装、源码获取、PHP/数据库/Nginx配置、Composer安装、网页向导设置以及设备添加与日常使用,帮助用户快速部署一套功能强大的开源网络监控解决方案。

tgb3456789的博客 1139

c++引用类型--将形参变量值带回主函数

形参a前面带有"&",说明形参a是引用类型。引用类型是c++语言特有的,引用类型的变量,其值若在函数中发生变化,则变化的值将会带到主函数中。 下面例子就展示了引用类型可以将值传回主函数 #include<stdio.h> #include<stdlib.h> void fa(int a) { a++; printf("in function ...

Clown_pan的博客 2409

ControlRig蓝图节点对应代码(自用)

用于通过python生成ControlRig蓝图节点,非完整

dicha9的博客 426

手把手教你用Docker快速部署ZLMediaKit流媒体服务器(含WebRTC配置)

本文详细介绍了如何使用Docker快速部署ZLMediaKit流媒体服务器,并配置WebRTC功能。通过容器化部署,实现环境一致性、资源隔离和快速扩展,同时提供WebRTC专项配置、多协议推拉流实战测试及生产环境优化建议,帮助开发者高效搭建企业级流媒体平台。

agile9scrum的博客 202

C语言基础:如何把函数处理结果的多个数据返回给主函数

当我们在函数处理结束后,需要传一个以上的数据返回给主函数,那我们有几种方法可以使用呢,使用时又有哪些注意事项?让我们跟着正文一起来学习。

linsc_05的博客 4061

Kill5.37版本下,使用ARMcomplier6编译__asm 函数报错的问题

Kill5-5.37版本下,使用ARMcomplier6编译__asm 函数报错的问题 问题简要描述: 昨日更新了keil5软件的版本,从5.17更新到了5.37版本,然后编译STM32项目文件时,软件提示编译报错。报错问题如下: Build started: Project: QKsoftware *** Using Compiler 'V6.18', folder: 'E:\MDK-ARM\ARM\ARM\ARMCLANG\Bin' Build target 'QKsoftware' compiling

weixin_43644424的博客 1万+

【2022年研究生入学考试中国海洋大学930大题答案】编程题5:(1)定义一个函数fun(),作用是从至多10个字符串中找出最长字符串,并通过形参*maxlen返回给主函数。 科目:程序设计基础

题目 本题是中国海洋大学2022年研究生入学考试930程序设计基础编程题第5题。 题目: (1)定义一个函数fun(),作用是从至多10个字符串中找出最长字符串,并通过形参*maxlen返回给主函数。 (2)定义主函数调用fun函数,输入字符串时最多允许输入10个字符串,且不想输入时可以通过输入****表示输入结束(15分) 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj。QQ:2394799692 一、解题思路 1,在find函数中用使用for循环遍历整个二维

立志冲海大 1384

多旋翼飞行器设计与控制·Pixhawk4以及外部设备接线(笔记004)

笔记主要来源:Pixhawk 4 接线快速入门 目录 一、Pixhawk 4 的各个接口 二、接线图概览(重要传感器及外围设备) 三、飞控、GPS的安装和方向 四、电源 五、无线电遥控 六、数传电台(可选) 七、SD Card(可选) 八、电机以及其他外设 一、Pixhawk 4 的各个接口 FMU:Flight Management Unit 飞行管理组件 主 FMU 处理器:STM32F765 32 位 Arm® Cortex®-M7,216MHz,2MB...

猪猪的博客 1万+

2026年北京君正数字IC笔试试卷带答案

本文摘要:该文档是一份数字IC设计相关的考试试题,包含单选题、多选题、波形分析题和代码设计题。内容涵盖时序约束、半导体工艺、状态机设计、逻辑综合、异步FIFO设计等知识点。试题解析详细,重点考察数字电路基础、时序分析和Verilog代码实现能力。典型题目包括多周期路径设置、Moore/Mealy状态机区别、同步复位与异步复位特性、RISC-V架构特点等,并提供了异步FIFO的Verilog实现参考代码。(149字)

Open 113

C++程序学习,第六部分——函数

函数定义的五个主要步骤1、返回值类型——返回的数据类型2、函数名——函数的名称3、参数列表——使用函数时,给函数输入的参数/数据4、函数体语句——具体的函数里面代码是什么5、return表达式——写这个函数的时候,需不需要这个函数返回给我们一些结果。return返回的数据和第一个返回值数据类型有关。右下角代码块,囊括函数的五个部分,并且实现了函数的功能。小结:先学会定义就可以了。

科学的殿堂 245

完整功能-《网络安全创新实践》:设计并实现一种基于Npcap的网络嗅探器(直接能运行cpp的MFC代码+实验报告)

《网络安全创新实践》:设计并实现一种基于Npcap的网络嗅探器。(直接能跑的MFC)监听所有数据包,以及监听指定IP地址的数据包;(2)能够显示完整的IP数据包首部信息,例如:版本、首部长度、数据包长度、数据包类型(协议字段)、TTL、源IP地址、目的IP地址等;(3)能够显示完整的TCP报文段信息,例如:源端口、目的端口、序号、确认号、数据部分等;(4)能够自动检测SQL注入攻击等Web攻击行为;(5)能够将监听到的数据包信息保存到文件中,以及从文件中读取并显示数据包信息;(6)具有图形化操作界面。

weixin_46531010的博客 661

二叉链表的生成c语言,递归创建二叉树c语言实现+详细解释

该楼层疑似违规已被系统折叠隐藏此楼查看此楼voidCreatBiTree(BiTreeT){chara;scanf("%c",&a);if(a=='@')T=NULL;else{T=(BiTree)malloc(sizeof(BiNode));T->data=a;CreatBiTree(T->lchild);CreatBiTree(T->rchild);}}虽能编...

weixin_35983968的博客 128

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java中形参和实参的区别

一、函数中使用: 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主函数中,进入被调函数后,实参变量也不能使用。 二、调用 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它...

weixin_42738587的博客 3万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

c++之函数形参和实参

c++之函数形参和实参讲解 1、非地址型参数 在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参。这里主要讲解一个非地址型的形参。 不多说,先看代码: 1 #include <iostream> 2 3 using namespace std; 4 5 void changeNumber(int num){ 6...

weixin_34168880的博客 3853

C语言函数的参数和返回值

形式参数和实际参数 前面已经介绍过,函数的参数分为形参和实参两种。在本节中,进一步介绍形参、实参的特点和两者的关系。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。 实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 函数的形参和实参

u013785511的专栏 2319

C++中函数的参数与返回值知识点

参数传递 1.值传递:把实参的值拷贝给形参,形参和实参是两个相互独立的对象。 2.引用传递:形参是引用类型,它将绑定到对应的实参上。 3.指针形参:指针的行为和其它非引用类型一样。将形参传递给实参时,是拷贝指针的值(也就是地址)。拷贝之后,两个指针是不同的指针,但是他们指向的地址相同,    所以通过指针可以修改它所指的对象的值。    总结:尽量使用引用形参,在拷贝大的类类型对象或者容

wk_bjut_edu_cn的博客 2180

函数和形参

你给它一些原材料(输入数据)它按照固定的流程加工(执行代码)最后给你一个成品(返回结果)比如一个"加法工厂":输入两个数字,输出它们的和。就像工厂里的"模具"或"占位符"在设计工厂时,我们说"这里放第一个数字,那里放第二个数字"这些"第一个数字"、"第二个数字"就是形参它们只是名字,还没有具体的值C语言默认是"值传递"就像复印机:复印一份给函数用,原件保持不变例子:void test(int x) {x = 100;// 只改变复印件int a = 5;test(a);

ZhuBin365的博客 772

java学习笔记(第7天:形参和返回值)

java的形参和返回值,包含了不确定数量的基本类型的方法,把类当作形参和返回值的方法。

qq_60587058的博客 618

c语言的功能函数返回值怎么在主函数调用_C语言学习|函数的应用《一》

C语言为程序的结构提供了函数和模块一、函数的定义与使用《编程之道》中写道:“一个程序应该是灵活自由的、它的子过程就像串在一根线子上的珍珠。”子过程在C语言中被称为”函数“。程序的执行从主函数开始,往复、循环、迭代地调用一个又一个函数。函数的分类1.库函数printf()、scanf()等都是ANSIC标准的库函数。任何ANSI C的编译器,无论在什么的平台,都必须提供这些函数供用户使用。仅调用AN...

weixin_39757212的博客 2662

【C++】c++之函数形参和实参

c++之函数形参和实参 c++之函数形参和实参讲解 1、非地址型参数 在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参。这里主要讲解一个非地址型的形参。 不多说,先看代码: 1 #include <iostream> 2 3 using namespace std; 4 5 void changeNumber(int n...

麦田里的守望者 6341

23-24C++(35)引用形参、变量作用域、有返回值函数

3、调用 f 函数,输出 f(b)的结果,不要错误地写成 f(b);如果在 f 的定义中,错误地写成了 void f(double a, double b),那么 a 和 b 是非引用形 参,f 里针对 a 和 b 的赋值都。3、主函数运行 int c=f(10)时,实参 10 传给形参 a,函数 f 的 return 值是 11,所以这句话相 当于 int c=11。故主函数中 f(a,b)报错, 因为实参 a 和 b 是 int,而 f 函数定义中形参 a 和 b 是 double。

2301_79885215的博客 286

C语言为什么数组名作参数传递给⼦函数时, ⼦函数可以改变主函数中数组的值?

C语⾔中,参数的传递⽅式是按值传递,即不论形参怎样改变,实参不被改变,这是在简单变量作参数时。为什么在数组名做参数时,⼦函数中数组元素改变后,主函数中的实参的数组元素也改变了呢?

致力于分享在各类技术领域的学习与实践经验,涵盖编程、虚拟化、开源工具、网络安全等。 1069

常指针、常引用作为形参和返回值

#include <iostream> using namespace std; const int N=10; int Sum1(const int *p) { int sum=0; for (int i=0;i<N;i++) { sum += *(p + i); } return sum; } void Sum2(const int*p, int *s)//常量指针,普通指针,无返回 { for (int i = 0; i < N; i++) { *s +=

棒棒的博客 965

JNI内形参从C代码中获取返回值并返回到Java层使用

工程的流程是基于C/C++语言进行底层的算法开发,再通过JNI获取结果,并拿到Java层运用。那么这里就要涉及到三层数据或值得传递了。作为中间层JNI如何将底层结果传出来呢? 当return已经被其他需要返回值占用了,此时又需要再增加一个返回值用于java层的使用判断。在不改变已有的接口形式的前提下,如何增加一个形参然后通过形参将值传递到Java层呢。

nanke_yh的博客 1568
上一篇: 文件操作
下一篇: 结构体指针
sooolo
博客等级 码龄17年 95粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值