言简意赅+图解 函数传参问题(传值、传地址 500字解决战斗)

news2024/9/23 23:29:36

1、传值

2、传地址

        不论是传值,还是传地址,形参都是对于实参的一份拷贝

下图为按值传递进行交换:

形参left拷贝一块新空间,形参right拷贝一块新空间

 下图为按指针传递进行交换

形参left拷贝一块新的空间,形参right拷贝一块新的空间

 

通过上面发现,形参就是实参的一份拷贝,不论你是按值传递还是按指针传递。

那么知道了形参就是实参的一份拷贝之后,那么就要继续探索拷贝的这块空间中存的啥??

值传递:显而易见的,存放的就是10 和 20 这俩个数值,值传递就是拷贝一块空间,然后把内容放入新的空间中。   进行交换,函数退出,形参释放,实参不变……额 没有交换

那么传地址呢?

其实也一样,也是创建一块空间,把内容放入我的新空间中,只是不同的是这次放的不是一个简单的数据,而是一个地址,通过对这个地址就可以访问实参中的数据,我能访问到实参,那么就与实参空间内容产生联系,我对你进行解引用交换修改岂不是一步到位?

所以为什么说传地址就能修改实参的值呢?原因就是上面这段话。

 进行交换,对形参解引用,访问实参中的数据

函数退出、形参释放、完成修改!!!

void Swap1(int *left, int *right)
{
	cout << "形参的值:" << endl;
	cout << "left 的地址:" << left << endl;
	cout << "right 的地址:" << right << endl;
	cout << "形参的地址:" << endl;
	cout << "left 的地址:" << &left << endl;
	cout << "right 的地址:" << &right << endl;

	int *temp = left;
	*left = *right;
	right = temp;
	
}

void Swap2(int left, int right)
{
	cout << "形参的值:" << endl;
	cout << "left 的地址:" << left << endl;
	cout << "right 的地址:" << right << endl;
	cout << "形参的地址:" << endl;
	cout << "left 的地址:" << &left << endl;
	cout << "right 的地址:" << &right << endl;

	int temp = left;
	left = right;
	right = temp;

}

int main()
{
	int a = 10;
	int b = 20;
	cout << "交换前:" << endl;
	cout << "a 的实参地址为" << &a << endl;
	cout << "b 的实参地址为" << &b << endl;
	Swap2(a, b);
	cout << "交换后:" << endl;
	cout << "a = " << a << " b = " << b << endl;
	return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

研究生薪资管理系统-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-5】研究生薪资管理系统 【案例介绍】 案例描述 在学校中&#xff0c;学生每个月需要交相应的生活费&#xff0c;老师每个月有相应的工资&#xff0c;而在职研究生既是老师又是学生&#xff0c;所以在职研究生既需要交学费又会有工资。下面要求编写一个程序来统计在职…

最完整的小红书带货笔记——垂直模式

最完整的小红书带货笔记——垂直模式&#xff0c;小红书直播复盘怎么做&#xff1f;#直播带货笔记 第1篇&#xff0c;带你解锁直播复盘5大要点&#xff01; #小红书店铺#小红书运营 小红书怎么发带货笔记&#xff1f; 做小红书带货的同学注意了&#xff0c;我们带货一定要发笔…

看见统计——第三章 概率分布

看见统计——第三章 概率分布 参考 https://github.com/seeingtheory/Seeing-Theory中心极限定理 概率分布描述了随机变量取值的规律。 随机变量Random Variables &#x1f525; 定义&#xff1a;将样本空间中的结果映射到实数的函数 XXX 称为随机变量(random variable)&a…

【算法基础】链表

一、单链表例题&#xff1a;实现一个单链表&#xff0c;链表初始为空&#xff0c;支持三种操作&#xff1a;向链表头插入一个数&#xff1b;删除第 k个插入的数后面的数&#xff1b;在第 k&#xfffd; 个插入的数后插入一个数。现在要对该链表进行 M次操作&#xff0c;进行完所…

单片机——显示方式

数码LED 一、静态显示方式 1、连接 所有LED的位选均共同连接到VCC或GND&#xff0c;每个LED的8根段选线分别连接一个8位并行I/O口&#xff0c;从该I/O口送出相应的字型码显示字型。 2、这种连接方式的缺点就是需要的数据线太多&#xff1a;我们可以计算一下&#xff1a;8*4133根…

[oeasy]python0088_字节_Byte_存储单位_KB_MB_GB_TB

编码进化 回忆上次内容 上次 回顾了 字符大战的结果 ibm 曾经的 EBCDIC 由于字符不连续的隐患 导致后续 出现 无数问题无法补救 7-bit 的 ASA X3.4-1963 字母序号连续 比较字符时 效率高判断字符 是否是字母 也很容易 获得了 IBM以外公司的 支持 为什么 ASA X3.4-1963 是 7…

PHP 页面静态化

前言随着网站的内容的增多和用户访问量的增多&#xff0c;网站加载会越来越慢&#xff0c;受限于带宽和服务器同一时间的请求次数的限制&#xff0c;&#xff0c;我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化。一、页面静态化概念静态化定义静态化就是指把原…

VNCTF 2023 - Web 象棋王子|电子木鱼|BabyGo Writeups

象棋王子 签到题&#xff0c;jsfuck解密 丢到console得到flag 电子木鱼 后面两道都是代码审计&#xff0c;这题是rust&#xff0c;题目给出了源码&#xff0c;下载下来看 关键代码&#xff1a; 由于限制&#xff0c;quantity只能为正数 功德也只能是正数&#xff08;负数的…

如何下载JDK8源码并导入IDEA

目录一、下载JDK8源码二、将源码导入IDEA一、下载JDK8源码 JDK8源码下载地址&#xff1a; https://hg.openjdk.org/ 1.打开下载地址&#xff0c;JDK8的源码都是基于jdk8u之上&#xff0c;所以点击jdk8u 2.进入页面之后可以看到一些小版本&#xff0c;这里我们选择 jdk8u60&am…

Python 之 Pandas Series 数据结构

文章目录一、Series 结构二、数据结构 Series 创建1. 创建1.1 列表/数组作为数据源创建 Series1.2 字典作为数据源创建 Series1.3 通过标量创建2. 参数说明2.1 index 参数2.2 name 参数2.3 copy 参数三、Series 的索引/切片1. 下标索引2. 标签索引3. 切片四、Series 数据结构的…

WSL1和WSL2相互转换以及安装路径迁移相关问题

目录 1.从WSL 1如何切换到WSL 2&#xff1f; 2.从WSL 2如何切换回WSL 1&#xff1f; 3.WSL1转换为WSL2后&#xff0c;WSL1里面安装的程序和库需要重装吗&#xff1f; 4.WSL2转换为WSL1后&#xff0c;WSL2里面安装的程序和库需要重装吗&#xff1f; 5.如何备份WSL2&#xf…

【内网安全】——Windows权限维持

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 以后赚大钱座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀专研方向&#xff1a; web安全&#xff0c;后渗透技术每日鸡汤&#xff1a;20岁的年纪不该困在爱与不爱里&#xff0c;对吗在红队…

shiro CVE-2020-13933

0x00 前言 同CVE-2020-1957&#xff0c;补充一下笔记&#xff0c;在CVE-2020-1957的基础上进行了绕过。 影响版本&#xff1a;Apache Shiro < 1.6.0 环境搭建参考&#xff1a;shiro CVE-2020-1957 0x01 漏洞复现 CVE-2020-13933中使用%3b绕过了shiro /*的检测方式&…

使用BP神经网络和Elman Net预测航班价格(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

电脑如何录制屏幕视频?6个屏幕录制的好方法

我们每天消费的大部分媒体都是通过视频。研究表明&#xff0c;与阅读相比&#xff0c;我们通过观看视频保留的信息更多。因此&#xff0c;很容易看出视频在我们的个人生活和职业生活中的重要性。 让我们更深入地了解视频录制软件和市场上的一些最佳选择。 如何确定好的视频录制…

建议收藏,轻松搞懂区块链

未来已来&#xff0c;只是不均衡地分布在当下 大家好&#xff0c;我是菜农&#xff0c;欢迎来到我的频道。 本文共 5844字&#xff0c;预计阅读 30 分钟 区块链是近些年来最热门的前沿技术&#xff0c;被认为是未来十几年对金融、物联网、医疗等诸多领域产生最大影响的"…

Similarity-Preserving KD(ICCV 2019)原理与代码解析

paper&#xff1a;Similarity-Preserving Knowledge Distillationcode&#xff1a;https://github.com/megvii-research/mdistiller/blob/master/mdistiller/distillers/SP.py背景本文的灵感来源于作者观察到在一个训练好的网络中&#xff0c;语义上相似的输入倾向于引起相似的…

[python入门㊾] - python异常中的断言

目录 ❤ 断言的功能与语法 ❤ 常用断言 ❤ 常用的断言表达方式 ❤ 异常断言 ❤ 正则断言 ❤ 检查断言装饰器 ❤ 断言的功能与语法 Python assert&#xff08;断言&#xff09;用于判断一个表达式&#xff0c;在表达式条件为 False 的时候触发异常 断言可以在条件…

2023Python接口自动化测试实战教程,附视频实战讲解

这两天一直在找直接用python做接口自动化的方法&#xff0c;在网上也搜了一些博客参考&#xff0c;今天自己动手试了一下。 一、整体结构 上图是项目的目录结构&#xff0c;下面主要介绍下每个目录的作用。 Common:公共方法:主要放置公共的操作的类&#xff0c;比如数据库sql…

js中数字运算结果与预期不一致的问题和解决方案

本文主要是和大家聊聊关于js中经常出现数字运算结果与预期结果不一致的问题&#xff0c;与及解决该问题的的方案。 一、问题现象 如&#xff1a;0.1 0.2的预期结果是0.3&#xff0c;但是在js中得到的计算结果却是0.30000000000000004&#xff0c;如下图所示 如&#xff1a;0…