值传递和址传递

值传递

上面的代码是想要交换x,y的值,把x,y传递给swap函数之后,执行下面的操作:

在swap中a和b交换了,但是和x,y没有关系,所以x,y在main中不会变。

址传递

下面再看把x,y的地址&x,&y传给swap,swap使用两个指针变量接受它们。

swap中的*a,*b是对地址的解引用,即*a就是x,*b就是y。所以交换了x和y的值

下面是具体步骤:

交换两个变量的指针不会改变变量的地址,也不会改变变量的值

再看交换x和y的指针,这个交换的是a,b指向的地址,并没有交换 x和y的值

想要交换x和y的地址是不能实现的。因为这些变量通常存储在栈(stack)或堆(heap)的固定位置,并且它们的地址是由编译器或运行时环境自动管理的。

引用:交换变量的值

下面是使用引用的方法交换两个变量的值,

把x,y传给swap,swap使用&a,&b接受。引用就相当于形参通过别名的方式操作实参。

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

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

相关文章

解析Java中1000个常用类:Character.Subse类,你学会了吗?

在线工具站 推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序员资料站 推荐一个程序员编程资料站:程序员的成长之路(http://cxyroad.com),收录了一些列的技术教程…

微信小程序与H5的区别

微信小程序与H5的区别主要体现在以下几个方面: 运行环境: H5的运行环境是任何浏览器,用户可以通过浏览器访问H5页面。微信小程序的运行环境并非完整的浏览器,而是微信团队基于浏览器内核完全重构的一个内置解析器,针对…

2024FIC决赛

容器密码:2024Fic~Competition~Finals杭州&Powered~By~HL! 案件背景: 2023年3月15日凌晨,受害人短视频平台上看到一段近期火爆的交通事故视频,留言后有人通过私信联系,称有一个赚大钱的机会,该人自称李某,提议让…

软件工程期末复习题

目录 选择 判断 选择 下列说法中正确的是 ( B )。 A、20 世纪50 年代提出了软件工程的概念摇 B、20 世纪60 年代提出了软件工程的概念 C、20 世纪70 年代出现了客户端/ 服务器技术 D、20 世纪80 年代软件工程学科达到成熟 软件危机的主要原因是 ( D )。 A、软件工具落后…

Java基础 - 枚举

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。 声明枚举 声明枚举时必须使用 enum 关键字,然后定义枚举的名称、可访问性、基础类型和成员等。 任意两个枚举成员不能具有相同的名称,且它的常数值必须在该枚举的基础类型的…

系统架构师面试题

系统架构师面试题通常会涉及多个方面,旨在考察应聘者的专业知识、实践经验以及解决问题的能力。以下是一些常见的系统架构师面试题: 请简要介绍一下您之前参与的项目: 在回答这个问题时,应着重介绍与架构设计相关的项目,包括项目的规模、涉及的技术栈、解决的问题以及您在…

基于STM32移植U8g2图形库——OLED显示(HAL库)

文章目录 一、U8g2简介1、特点2、U8g2的使用步骤 二、I2C相关介绍1、I2C的基本原理2、I2C的时序协议 三、OLED屏的工作原理四、汉字点阵显示原理五、建立STM32CubeMX工程六、U8g2移植1、U8g2源码2、移植过程 七、代码编写1、参考博主实现的U82G的demo例程(1&#xf…

【Linux内核】伙伴系统算法和slab分配器(1)

【Linux内核】伙伴系统算法和slab分配器(1) 目录 【Linux内核】伙伴系统算法和slab分配器(1)伙伴系统(buddy)算法伙伴系统算法基本原理内存申请内存回收 接口函数源码分析内存分配接口物理内存释放接口规范…

基于Wireshark实现对FTP的抓包分析

基于Wireshark实现对FTP的抓包分析 前言一、虚拟机Win10环境配置二、FileZilla客户端的安装配置下载FileZilla客户端安装FileZilla 三、FileZilla Server安装下载FileZilla Server安装 四、实现对FTP的抓包前置工作实现抓包完成抓包 前言 推荐一个网站给想要了解或者学习人工智…

增量数据库同步软件PanguSync侵入式全面清理脚本

Sqlserver -- 变量声明 DECLARE tableName NVARCHAR(256) DECLARE indexName NVARCHAR(128) DECLARE triggerName NVARCHAR(256) DECLARE sql NVARCHAR(MAX) DECLARE constraintsname NVARCHAR(256) -- 声明游标来遍历所有用户表 DECLARE curTables CURSOR FOR …

JS中访问节点和创建节点的方法都有什么?

在JavaScript中,访问节点和创建节点的方法非常丰富。以下是对这两种操作的详细方法归纳: 访问节点的方法 通过ID访问: getElementById(id):通过元素的ID属性获取对应的DOM节点。通过类名访问: getElementsByClassNam…

Setapp:只需一次订阅,即可获得 240 款+ Mac 软件

为一项任务寻找合适的应用程序是一项相当艰巨的任务。过去,最好的办法要么是花费宝贵的时间搜索可靠的评论,要么就是相信无论安装什么软件都能完成任务。 如果你是 Mac 用户,那么 Setapp 将让这一问题成为过去。无需在需要时下载单个程序&am…

【C++ COM组件 运用ATL工程创建和调用COM组件】

ATL (Active Template Library) 是一个用于简化 COM (Component Object Model) 组件开发的库。使用 ATL,你可以创建 COM 对象,这些对象可以跨进程和跨机器进行通信。下面是一个简单的步骤,说明如何使用 ATL 创建一个简单的 COM 组件&#xff…

vue之一键部署的shell脚本和它的点.bat文件、海螺AI、ChatGPT

MENU 前言vite.config.ts的配置deploy文件夹的其他内容remote.shpwd.txtdeploy.bat 前言 1、在src同级新建deploy.bat文件; 2、在src同级新建deploy文件夹,文件夹中新建pwd.txt和remote.sh文件; 3、配置好后,直接双击deploy.bat文…

鸿蒙轻内核M核源码分析系列二一 02 文件系统LittleFS

1、LFS文件系统结构体介绍 会分2部分来介绍结构体部分,先介绍LittleFS文件系统的结构体,然后介绍LiteOS-M内核中提供的和LittleFS相关的一些结构体。 1.1 LittleFS的枚举结构体 在openharmony/third_party/littlefs/lfs.h头文件中定义LittleFS的枚举、…

JavaScript-for循环

学习目标: 掌握for循环 学习内容: for循环语法退出循环for循环和while循环有什么区别for循环嵌套 for循环语法: 作用:重复执行代码。好处:把声明起始值、循环条件、变化值写到一起,让人一目了然&#xff…

在线时钟python案例

试了一下用通义来编写一些代码,以下是一个在线时钟的样例,只要能运行python就可以使用。 以下是运行后的结果。 代码(复制可用) import tkinter as tk from time import strftimedef update_time():current_time strftime(&quo…

Postman使用教程(Postman详细图文教程)

本文讲解的是postman工具安装、postman安装教程、postman工具下载、postman使用教程。Postman使得得开发人员和测试人员能够更高效地与Web服务进行交互和调试。 Postman不仅支持常见的HTTP方法,如GET、POST、PUT、DELETE等,还提供了丰富的请求编辑功能&…

c++ 设计类的时的构造函数和析构函数的注意事项

纯概念 类和对象是c里非常重要的概念。类属于一种数据类型,是根据业务逻辑,封装一些成员变量(数据部分)和成员函数(逻辑部分)。业务逻辑使用时,类可以实例化成对象。其中,在实例化对…

20240615给飞凌的OK3588-C开发板刷Rockchip原厂的Buildroot后的测试报告

20240615给飞凌的OK3588-C开发板刷Rockchip原厂的Buildroot后的测试报告: 【切记,由于没有替换DTS的,开发板发热量巨大!因此配备鼓风机进行加强散热了】 0、adb 默认没有 1、HDMI IN 4K 2024/6/15 20:32 4K全屏 2、HDMI OUT …