当前位置: 首页 > news >正文

形参和实参

目录

形参(形式参数): 

实参(实际参数):

形参和实参的区别和联系

具体实例:     


当我们谈论"形参"和"实参"时,可以用以下类比来解释它们之间的关系:

形参就像是一个空杯子,而实参就是要倒进这个杯子里的水。

形参(形式参数): 

-在函数定义中出现的参数可以看做是一个站位符,它没有数据,只能等到函数被调用时接受传递来的数据,所以简称形式参数,简称形参

-形参就像是函数或方法定义中声明的空杯子,它们用来接收传递给函数或方法的值。

-形参只有在函数或方法被定义时才存在,并且没有具体的值,就像空杯子一样等待被填充。

实参(实际参数):

-函数被调用时给出的参数包含了实实在在的数据,会被函数内部的代码使用,所以简称实际参数,简称实参

-实参就像是要被倒入空杯子的水,它们是实际传递给函数或方法的具体值。

-实参是调用函数或方法时提供的实际数据,它们会被传递给形参并填充到空杯子里。

-形参和实参的功能是传递数据,发生函数调用的时,实参的值会传递给形参

换句话说,形参是函数或方法定义中的占位符,而实参是在调用函数或方法时提供给形参的具体值。

举个简单的例子,假设我们有一个函数用来打印一个人的名字:

void PrintName(string name) // 这里的name就是形参,就像一个空杯子
{Console.WriteLine($"Hello, {name}!");
}PrintName("Alice"); // 在调用函数时,传递的"Alice"就是实参,就像要被倒入空杯子的水

在这个例子中,函数 PrintName 中的 name 就是形参,它等待被实参填充。而在调用函数时,我们提供了实参 "Alice",它被传递给形参 name 并填充到函数中。

形参和实参的区别和联系


1) 形参变量只有在函数被调用时才会分配内存,调用结束后,立刻释放内存,所以形参变量只有在函数内部有效,不能在函数外部使用。


2) 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的数据,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参,所以应该提前用赋值、输入等办法使实参获得确定值。

3) 实参和形参在数量上、类型上、顺序上必须严格一致,否则会发生“类型不匹配”的错误。当然,如果能够进行自动类型转换,或者进行了强制类型转换,那么实参类型也可以不同于形参类型。

4) 函数调用中发生的数据传递是单向的,只能把实参的值传递给形参,而不能把形参的值反向地传递给实参;换句话说,一旦完成数据的传递,实参和形参就再也没有瓜葛了,所以,在函数调用过程中,形参的值发生改变并不会影响实参。

因此,形参和实参之间的实际区别在于,形参是函数或方法定义中的占位符,而实参是在调用函数或方法时提供给形参的具体值。

具体实例:     

#include <stdio.h>//计算从m加到n的值
int sum(int m, int n) {int i;for (i = m+1; i <= n; ++i) {m += i;}return m;
}int main() {int a, b, total;printf("Input two numbers: ");scanf("%d %d", &a, &b);total = sum(a, b);printf("a=%d, b=%d\n", a, b);printf("total=%d\n", total);return 0;
}

运行结果:
Input two numbers: 1 100↙
a=1, b=100
total=5050

在这段代码中,函数定义处的 m、n 是形参,函数调用处的 a、b 是实参。通过 scanf() 可以读取用户输入的数据,并赋值给 a、b,在调用 sum() 函数时,这份数据会传递给形参 m、n。

从运行情况看,输入 a 值为 1,即实参 a 的值为 1,把这个值传递给函数 sum() 后,形参 m 的初始值也为 1,在函数执行过程中,形参 m 的值变为 5050。函数运行结束后,输出实参 a 的值仍为 1,可见实参的值不会随形参的变化而变化。

以上调用 sum() 时是将变量作为函数实参,除此以外,你也可以将常量、表达式、函数返回值作为实参,如下所示

total = sum(10, 98);  //将常量作为实参
total = sum(a+10, b-3);  //将表达式作为实参
total = sum( pow(2,2), abs(-100) );  //将函数返回值作为实参

5) 形参和实参虽然可以同名,但它们之间是相互独立的,互不影响,因为实参在函数外部有效,而形参在函数内部有效。

更改上面的代码,让实参和形参同名:

#include <stdio.h>//计算从m加到n的值
int sum(int m, int n) {int i;for (i = m + 1; i <= n; ++i) {m += i;}return m;
}int main() {int m, n, total;printf("Input two numbers: ");scanf("%d %d", &m, &n);total = sum(m, n);printf("m=%d, n=%d\n", m, n);printf("total=%d\n", total);return 0;
}

运行结果:
Input two numbers: 1 100
m=1, n=100
total=5050

调用 sum() 函数后,函数内部的形参 m 的值已经发生了变化,而函数外部的实参 m 的值依然保持不变,可见它们是相互独立的两个变量,除了传递参数的一瞬间,其它时候是没有瓜葛的。 

相关文章:

形参和实参

目录 形参&#xff08;形式参数&#xff09;&#xff1a; 实参&#xff08;实际参数&#xff09;&#xff1a; 形参和实参的区别和联系 具体实例: 当我们谈论"形参"和"实参"时&#xff0c;可以用以下类比来解释它们之间的关系&#xff1a; 形参…...

[git] windows系统安装git教程和配置

一、何为Git Git(读音为/gɪt/)是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 二、git安装包 有2种版本&#xff0c;Git for Windows Setup和Git for Windows Portable(便携版)两个版本都可以。 三、Git for Windows Por…...

php的性能要比node.js高很多吗?

在当今的编程世界中&#xff0c;PHP和Node.js是两种广泛使用的服务器端编程语言。虽然它们都用于构建高效的网络应用程序&#xff0c;但关于它们性能的争论一直存在。有些人认为PHP的性能要比Node.js高很多&#xff0c;而另一些人则持相反意见。 性能通常指的是计算机程序或系…...

[极客大挑战 2019]BabySQL1

发现union select被过滤了&#xff0c;双写绕过 or、from被过滤 where被过滤 在b4bysql中找到flag...

机器视觉在OCR字符检测的应用

在产品质量 检测过程中&#xff0c;对于字符、条码等标识信息的识别、读取、检测是非常重要的一部分&#xff0c;比如在食品饮料包装检测中&#xff0c;生产日期 、保质期 、生产批号 、条码等字符信息是产品管理和追溯必不可缺的&#xff0c;因此利用机器视觉技术进行OCR字符采…...

讲清楚浅拷贝和深拷贝

先放出实现浅拷贝和深拷贝的一些方法(直接食用)&#xff1a; 1.浅拷贝&#xff1a; 浅拷贝在拷贝对象的时候&#xff0c;对于对象最外一层实现的是普通的值拷贝&#xff0c;对于对象里面的对象是浅拷贝&#xff0c;只复制地址不复制地址对应的值。 /* 方法1.1&#xff1a;扩…...

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-1最优控制问题与性能指标 1. 最优控制问题与性能指标2. 动态规划 Dynamic Programming2.1 基本概念2.2 代码详解2.3 简单一维案例 3. 线性二次型调节器&#xff…...

RedisInsight详细安装教程

简介 RedisInsight 是一个直观高效的 Redis GUI 管理工具&#xff0c;它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控&#xff0c;并且可以在界面上使用 CLI 和连接的 Redis 进行交互&#xff08;RedisInsight 内置对 Redis 模块支持&#xff09;。 RedisIn…...

maven组件升级报错经验汇总

1. NosuchMethodError org.springframework.beans.factory.support.genericBeanDefinition(xxxxx) 2. ClassNotFoundException: org.springframework.boot.SpringApplication 可能冲突的依赖是&#xff1a; <dependency><groupId>org.springframework.boot</g…...

JS 中的 async 与 await

课程地址 有 4 个返回 Promise 对象的函数 ABCD&#xff0c;现在想让这 4 个 Promise 顺序执行&#xff1a; const isA true; const isB true; const isC true; const isD true;function A() {return new Promise((resolve, reject) > {console.log("running A&q…...

SQL 系列教程(六)

目录 SQL FOREIGN KEY 约束 SQL FOREIGN KEY 约束 创建表时的 FOREIGN KEY 约束 修改表时的 FOREIGN KEY 约束 撤销 FOREIGN KEY 约束 SQL CHECK 约束 SQL CHECK 约束 创建表时的 CHECK 约束 修改表的 CHECK 约束 撤销 CHECK 约束 SQL DEFAULT 约束 SQL DEFAULT 约…...

CocoaPods的安装和使用

前言 本篇文章讲述CocoaPods的安装和使用 安装cocoaPods 如果电脑没有安装过cocoaPods&#xff0c;需要先安装&#xff0c;使用下面的命令&#xff1a; sudo gem install cocoapods输入密码后开始安装&#xff0c;需要等待。。。但是我这里报错了。 The last version of d…...

Linux下软件安装的命令【RPM,YUM】及常用服务安装【JDK,Tomcat,MySQL】

Linux下软件安装的命令 源码安装 以源代码安装软件&#xff0c;每次都需要配置操作系统、配置编译参数、实际编译&#xff0c;最后还要依据个人喜好的方式来安装软件。这个过程很麻烦很累人。 RPM软件包管理 RPM安装软件的默认路径: 注意&#xff1a; /etc 配置文件放置目录…...

【linux】-telnet服务安装

1. 说明 telnet 分为 &#xff1a;telnet 服务端 和 telnet 客户端 本文只演示安装 telnet服务端 2. 安装telnet服务端、以及守护服务xinetd 2.1 检测telnet-server的rpm包是否安装 rpm -qa telnet-server 2.2 若未安装&#xff0c;则安装telnet-server&#xff0…...

安卓开发——Activity及常用布局和控件的使用

Activity及常用布局和控件的使用 一、实验目的 掌握Android常用布局和控件的使用。 Activity组件使用和Intent机制&#xff0c;加强对Activity生命周期的理解 二、实验设备及器件 Android Studio&#xff0c;图标&#xff1a;http://10.37.59.210/download/icon/MobileShopI…...

.net访问oracle数据库性能问题

问题&#xff1a; 生产环境相同的inser语句在别的非.NET程序相应明显快于.NET程序&#xff0c;执行时间相差比较大&#xff0c;影响正常业务运行&#xff0c;测试环境反而正常。 问题详细诊断过程 问题初步判断诊断过程&#xff1a; 查询插入慢的sql_id 检查对应的执行计划…...

vue上传解析excel表格并修改字段名

目录 1.安装 xlsx 2.引入 3.使用 1.安装 xlsx npm install xlsx 2.引入 import * as XLSX from xlsx; 3.使用 <template><div class"UploadCptOutbox"><div class"Tooloutbox"><el-uploadclass"upload"ref"u…...

jupyter notebook删除kernel & conda 删除虚拟环境

jupyter kernelspec list #列出jupyter的所有kernel jupyter kernelspec remove kernel_name #删除特定的kerneljupyter kernelspec list 命令可以在任何激活的环境中运行&#xff0c;无论是 base 环境还是某个虚拟环境。该命令将列出所有已注册的 Jupyter 内核&#xff0c;包括…...

Redis在生产环境中可能遇到的问题与解决方案(三)

11. Redis高可用问题 问题描述 在Redis集群中&#xff0c;当主节点发生故障时&#xff0c;需要快速切换到备用主节点&#xff0c;确保系统高可用。 解决方案 Redis Sentinel&#xff1a; 使用Redis Sentinel进行主从节点的监控和自动故障转移。 备用主节点&#xff1a; 配置…...

【C++干货铺】 RAII实现智能指针

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 为什么需要智能指针&#xff1f; 内存泄漏 什么是内存泄漏&#xff0c;内存泄露的危害 内存泄漏的分类 堆内存泄漏&#xff08;Heap leak&#xff09; 系统资…...

【竞技宝jjb.lol】LOL:xiaohu岩雀天命抢龙扭转乾坤 WBG2-0轻取RA

北京时间2024年1月26日&#xff0c;英雄联盟LPL2024春季赛在昨天迎来第一周第四个比赛日&#xff0c;本日首场比赛由WBG对阵RA。本场比赛RA虽然在首局前期给了WBG很大的压力&#xff0c;但WBG还是凭借后期出色的团战配合拿下胜利&#xff0c;最终WBG2-0轻取RA。以下是本场比赛的…...

GoZero微服务个人探究之路(九)api文件编写总结

参考来源go-zero官方文档https://go-zero.dev/docs/tutorials 前言 go-zero是目前star最多的go语言微服务框架&#xff0c;api 是 go-zero特殊的语言&#xff0c;类型文件&#xff0c;go-zero自带的goctl可以通过.api文件生成http服务代码 api文件内容编写 不可使用关键字 …...

泛型..

1.泛型 所谓泛型 在类定义处是一种类型参数(我们平常所见到的参数指的就是方法中的参数 他接收有外界传递来的值 然后在方法中进行使用) 在类内部的话 则充当一种占位符 并且还提高了代码的复用率 何以见得提高了代码的复用率 其实就是通过对比使用了泛型技术和没有使用泛型技…...

Android App开发基础(1)—— App的开发特点

本文介绍基于Android系统的App开发常识&#xff0c;包括以下几个方面&#xff1a;App开发与其他软件开发有什么不一样&#xff0c;App工程是怎样的组织结构又是怎样配置的&#xff0c;App开发的前后端分离设计是如何运作实现的&#xff0c;App的活动页面是如何创建又是如何跳转…...

docker-compose初探

我一直直接使用docker命令来创建容器&#xff0c;没有怎么用过docker-compose。也不知道docker-compose和docker有什么区别&#xff0c;docker-compose有什么好处。 现在我约略认为&#xff0c;docker-compose是一个简化docker命令的工具&#xff0c;或者说&#xff0c;它是能…...

【webrtc】跟webrtc学时间戳、序号类型转换

间隔ms src\modules\congestion_controller\remb_throttler.ccnamespace {constexpr TimeDelta kRembSendInterval = TimeDelta::Millis(200); } // namespace百分比的处理 src\modules\congestion_controller\remb_throttler.ccvoid RembT...

文件操作与IO(一些小项目)

在指定目录中寻找文件 扫描指定目录,并找到名称对应的所有文件(不包含目录). import java.io.File; import java.util.Scanner;public class Project1 {public static void main(String[] args) {//1.输入必要的信息Scanner sc new Scanner(System.in);System.out.println(&…...

C语言-算法-线性dp

[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径&#xff0c;使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中&#xff0c;从 7 → 3 → 8 →…...

Pandas应用-股票分析实战

股票时间序列 时间序列&#xff1a; 金融领域最重要的数据类型之一 股价、汇率为常见的时间序列数据 趋势分析&#xff1a; 主要分析时间序列在某一方向上持续运动 在量化交易领域&#xff0c;我们通过统计手段对投资品的收益率进行时间序列建模&#xff0c;以此来预测未来的收…...

Database history tablesupgraded

zabbix升级到6之后&#xff0c;配置安装完成会有一个红色输出&#xff0c;但是不影响zabbix使用&#xff0c;出于强迫症&#xff0c;找到了该问题的解决方法。 Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to nume…...

苏州做网站公/seo系统推广

Action参数绑定功能提供了URL变量和操作方法的参数绑定支持&#xff0c;这一功能可以使得你的操作方法定义和参数获取更加清晰&#xff0c;也便于跨模块调用操作方法了。这一新特性对以往的操作方法使用没有任何影响&#xff0c;你也可以用新的方式来改造以往的操作方法定义。 …...

有什么网站做知识吗/市场调研报告怎么写的

但是设置Linux网络的方法有两种&#xff1a; 第一种&#xff1a;修改配置文档&#xff08;需要重启网络配置,永远生效&#xff09; 一、修改IP地址 [aeolusdb1 network-scripts]$ vi ifcfg-eth0 DEVICEeth0 ONBOOTyes BOOTPROTOstatic IPADDR192.168.30.197 NETMASK255.255.25…...

奉节网站建设/b2b网站排名

Java Web应用中调优线程池的重要性不论你是否关注&#xff0c;Java Web应用都或多或少的使用了线程池来处理请求。线程池的实现细节可能会被忽视&#xff0c;但是有关于线程池的使用和调优迟早是需要了解的。本文主要介绍Java线程池的使用和如何正确的配置线程池。单线程我们先…...

网站代理工具/深圳优化怎么做搜索

关注云报洞察深一度好消息&#xff01;工业和信息化部刚刚印发了《中小企业数字化转型指南》&#xff08;以下简称“《指南》”&#xff09;&#xff0c;旨在从增强企业转型能力、提升转型供给水平等多个维度&#xff0c;助力中小企业科学高效推进数字化转型&#xff0c;提升为…...

将自己的网站导入织梦/东台网络推广

* packet mipang* 使用实例* $str "绿壳蛋鸡撒范德萨下一年&#xff0c;下一年1的洒落开房间卢卡斯地方军";* $key new KeyReplace($str,array("xxxx">"sadf","下一年1">http://baidu.com,"下一年">google.com))…...

网站建设哪些好/南京seo排名优化公司

文章目录1.1 大数据时代为什么全球数据量 增长如此之快&#xff1f;何谓大数据&#xff1f;1.2 云计算——大数据的计算1.2.1 大数据与云计算的关系1.2.2 云计算长定义1.2.3 云计算短定义1.2.4 云计算的7个特点1.2.5 云计算三类服务类型 &#xff08;重点&#xff09;1.3 云计算…...