C++函数的三种传递方式为:值传递、指针传递和引用传递

(C++)引用——详细讲解和例子说明 引用:已定义的变量的别名(另一个名称) eg:有一个人叫张三,外号叫做张胖子,而张胖子就是我们所说的引用。 上面所说的张三还是张胖子,他都是同一个人。所以我们引用也是一样的,只是名称不同,但它是同一个变量。 引用变量的主要用途是用作函数的形参,通过将引用变量作为参数,函数将使用原始数据,而不是其副本,这样除指针之外,引用也可以为函数处理大型结构提供一种方便的途径。 创建引用变量(使用&符号)&符号有两种用途: 1、变量的地址。 2、声明引用。eg: int a; int & b 阅读详情

C++函数的三种传递方式为:值传递、指针传递和引用传递

值传递:

复制代码
void fun(int x){

x += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的一块临时空间把y的值 送给了x;这样也增加了程序运行的时间,降低了程序的效率。

}

void main(void){

int y = 0;

fun(y);

cout<<\"y = \"<<y<<endl; //y = 0;

}
复制代码

指针传递:

复制代码
void fun(int *x){

*x += 5; //修改的是指针x指向的内存单元值

}

void main(void){

int y = 0;

fun(&y);

cout<<<<\"y = \"<<y<<endl; //y = 5;

}
复制代码

引用传递:

复制代码
void fun(int &x){

x += 5; //修改的是x引用的对象值 &x = y;

}

void main(void){

int y = 0;

fun(y);

cout<<<<\"y = \"<<y<<endl; //y = 5;

}
复制代码

1.值传递:有一个形参向函数所属的栈拷贝数据的过程,如果值传递的对象是类对象或是大的结构体对象,将耗费一定的时间和空间。

2.指针传递:同样有一个形参向函数所属的栈拷贝数据的过程,但拷贝的数据是一个固定为4字节的地址。

3.引用传递:同样有上述的数据拷贝过程,但其是针对地址的,相当于为该数据所在的地址起了一个别名。

效率上讲,指针传递和引用传递比值传递效率高。一般主张使用引用传递,代码逻辑上更加紧凑、清晰。

引用传递做函数参数”是C++的特性,C语言不支持。

例如:数据结构带&与不带&

带&的是引用型参数,它是地址传递,其实参会随着形参的改变而改变;不带&的参数是一般参数,是值传递,其实参不会随着形参的改变而改变。所以,结构改变,并且需要传回这种改变的要用引用型参数,否则用一般参数。GetElem(L,i)只是找到第i个元素的值,线性表的结构并未发生任何改变,所以参数L前面不用加&。ListInsert(&L,i,e)是在线性表L的第i个元素处插入一个数值为e的元素,线性表L的结构发生了改变,长度增加了,所以在L前必须加上&。如果不加,显示L时,新增元素就显示不出来,显示L的长度,也仍然是增加以前的值,比实际长度少1.

C++函数参数中&和*的意义 写这篇博文的动机是,在看Linux网络编程时,看到 //bind 函数定义 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); //函数调用 bind(lfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)); 觉得在函数参数中一会用 *,一会... 阅读详情

相关推荐

C++ 函数参数传递时,值传递、引用传递、指针传递有什么区别?

在 C++ 中,函数参数传递方式包括指针传递、引用传递和值传递,它们各自有不同的特点和应用场景

cl122763974的博客 1381

Python实现Windows磁盘隐藏工具开发指南

Windows系统通过注册表控制磁盘分区的可见性,其中NoDrives键值采用位运算原理实现多磁盘组合隐藏。这种技术方案既能保护隐私文件,又避免修改系统关键设置。Python凭借winreg模块和PyQt5框架,可以快速开发出轻量级的磁盘管理工具,特别适合需要临时隐藏工作分区或创建隐私空间的场景。通过封装注册表操作和设计友好的GUI界面,开发者能实现类似Windows磁盘管理器的核心功能,同时解决原生工具操作路径深、第三方软件功能冗余等问题。

weixin_30367169的博客 512

Hopfield神经网络(HNN)详解

Hopfield神经网络是一种比较特殊的网络,它不像一般的神经网络那样有输入层和输出层,并且通过训练来改变神经网络中的参数,最终实现预测、识别等功能。Hopfield网络只有一群神经元节点,所有节点之间相互连接,形式如下: 虽然有些文章会画出像深度神经网络那样有输入输出的图,并且输出后又返回输入,但本质上就是多个节点之间的全连接,也就是上面的图形。Hopfield神经网络主要有两个应用:一是起到类似储存器的作用,也就是我们把多个序列或图片输入这个网络,最终这个网络会以神经元之间连接权重的形式储存这

weixin_60737527的博客 4万+

c++:函数传指针(void * xx)、传引用(void & xx)和传指针的引用(void *& xx)

1。函数的形参是指针类型void func(int * arg) void func(int * arg) { *arg = 15; } main() { int * p; *p =12; func(p); printf(“%d’,*p); } 函数

扎扎实实写代码的专栏 6152

从零到一:STM32 CubeMX与WS2812B的DMA驱动艺术

本文详细介绍了如何使用STM32 CubeMX和DMA技术驱动WS2812B RGB LED灯条,从硬件设计到软件实现的全过程。通过CubeMX配置定时器和DMA,实现高效的PWM波形生成与数据传输,解决传统GPIO控制资源占用高的问题。文章还提供了颜色编码、动画效果实现及常见问题解决方案,助力开发者快速掌握智能LED控制技术。

weixin_28278377的博客 977

Vue2项目实战:vue2-org-tree实现动态组织架构图

本文详细介绍了如何在Vue2项目中使用vue2-org-tree组件实现动态、可交互的组织架构图。内容涵盖从快速安装、基础渲染到核心功能实战,包括水平布局、节点展开折叠、响应式数据绑定、深度自定义节点内容以及事件处理。同时提供了性能优化、样式覆盖等避坑指南,并通过一个完整的企业级Demo展示了如何打造功能丰富的架构图,助力高效开发后台管理系统。

weixin_28040125的博客 522

c++关于值传递,引用传递和指针传递以及深拷贝和浅拷贝的理解

c++ 传参类型和拷贝类型

皮爱基的博客 2817

基于IC617下Layout XL的使用

基于IC617下Layout XL的使用

weixin_43816759的博客 1万+

【C++基础】C++调用函数时的三种参数传递方式(传值、传引用、传地址)

传值:参数的原始值不会在变量被使用的过程中改变。传引用:参数的原始值在被调用的过程中会覆盖,参数值变成了最后被赋值的结果。传地址:参数的原始地址指向被改变后,参数地址为最后一次指向的地址,与传引用类似,原始参数地址会被覆盖。传引用和传地址比较类似,都是原始参数值会被覆盖。只不过引用涉及到的是值,传地址涉及到的是地址。

杰西笔记 2153

IntelliJ IDEA 2025.1 + Gradle 镜像配置避坑指南:解决依赖下载慢的终极方案

本文针对IntelliJ IDEA 2025.1开发环境中Gradle依赖下载缓慢的问题,提供了详细的镜像配置避坑指南。通过解析Gradle依赖解析机制,重点指导如何正确配置阿里云等国内镜像仓库,并分享验证配置生效、排查常见错误及高级优化技巧,旨在彻底解决依赖下载难题,提升开发效率。

weixin_28835551的博客 532

android HTTPS未校验服务器证书漏洞修复

上述代码是重写了域名校验的逻辑,每个证书里携带的域名是不可更改的,如果证书是合法的证书签发机构签发的,并且域名是和你要请求的域名对的上的,基本上就能确认你访问就服务器地址就是要访问的服务器地址,这样才是安全的。上述代码就是重新了证书校验的逻辑,信任所有的证书,正确的逻辑是要校验证书是否是可信任的证书签发机构所认证的,如果不校验的话你虽然是用了https加密传输,只要你的客户端用户信任了其他的证书哪怕是非法的证书,一样能够请求通过,而这个证书的服务器就可以解密你的报文,拿到你的隐私信息了。

kyzycyey的专栏 2622

C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)

C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解) 引用与指针的比较 引用是 C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n 是m 的 一个引用(reference),m 是被引用物(referent)。 int m; int &n = m; n 相当于m 的别名(绰号),对n 的任何操作就是对m 的操作。例如有人名叫王小毛, 他的绰号是“三毛

thisispan 3103

Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法

Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法 目录 Unity AssetBundle 之 (入门)简单的资源打包成AB包的方法 一、简单介绍 二、实现原理 三、注意事项 四、效果预览 五、实现步骤 六、关键代码 一、简单介绍 Unity中的一些基础知识点。 本节介绍,Asset Bundle 在 Unity中的使用,入门第一篇,如何AssetBundle标记,如何打包成AssetBundle的操作方法,有不对的地方欢迎指正。...

仙魁XAN 1万+

c语言中变量的引用传递和指针,我说C/C++——函数参数传递方式(三种:值传递、引用传递、指针传递)...

目录一、前言本文介绍C/C++语言中三种函数参数传递方式:值传递、引用传递、指针传递,全文分为三个部分:“初识三种函数参数传递方式”“代码演示”“引用传递和指针传递的区别”。初识三种函数参数传递方式:该部分用表格对比三种函数参数传递方式;代码演示:该部分分为三个小节,分别用代码实现值传递、引用传递、指针传递;引用传递和指针传递的区别:着重介绍引用传递和指针传递区别。一起来看看吧!二、初识三种函数参...

weixin_26879037的博客 1621

DevExpress中使用BandGridView实现复合(多行)表头、设置多行表头背景颜色、表格边框颜色

一、实现效果 二、 实现方法 2.1、创建复合表头 ①将创建的GridControl下的GirdView1转化为BandGridView类型; ②创建需要展示的列(指定列的名称【Name】、描述【caption】、数据字段名称【FieldName】) ③绑定列实现复合表头。 注意:如果复合表头有多行,则需要设置新增Band的Row Count,然后设置【Band properties下的AutoFillDown=false】 详细操作如下: 注意:如果要隐藏表格的设计字段内容,则需.

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2893

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

2017033000C++函数参数和返回值三种传递方式:值传递、指针传递和引用传递(着重理解)

之前作为自己学习资料,不知道集哪些大牛于一体,如若涉及到其他人,请与我联系

DerHaseBruder的博客 469

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

函数参数传递三种方式(传值方式,地址传递,引用传递)数组做参数和引用传递原理相同(指针传址),但不是典型的C++中的引用,引用是C++中常用方式,底层实际是靠指针实现的

函数参数传递三种方式(传值方式,地址传递,引用传递)数组做参数属于引用传递

二进制模----细微行动改变影响世界 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++中数组作为形参的值传递、指针传递和引用传递

在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。

weixin_50578602的博客 4828

C++ 值传递、指针传递、引用传递

指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理, 即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的

weixin_41744192的博客 2771

C++函数的参数三种传值方式为:值传递、地址传递(指针传递,引用传递)

C++函数的参数三种传值方式为:值传递、地址传递(指针传递,引用传递) 转载未央1117最后发布于2018-05-08 15:58:14阅读数 2839收藏 展开 (1)指针传递与引用传递的区别: 指针参数传递本质上是值传递,它所传递的是一个地址值。值传递过程中,被调函数的形参作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本...

cxu123321的博客 1867

C++ 函数三种传参形式(指针传递、引用传递、值传递)及其作用

C++函数参数传递方式比较:指针传递通过地址直接操作原变量,避免数据复制,适合大型结构;引用传递作为变量别名更简洁安全,支持多态;值传递则创建副本保护原数据但效率较低。指针和引用都能修改原变量,而值传递仅操作副本。指针需解引用操作,引用语法更直观。基本类型推荐值传递,大型对象应使用const引用以提升性能。三种方式各有适用场景,需根据需求权衡效率与安全性。

zxy_ZXY123的博客 7950

【C++ - 18】C++函数参数传递三种方式

当进行函数调用的时候,要填入与函数形式参数个数相同的实际参数,在程序运行的过程中,实参会将参数值传递给形参,C++函数参数传递有以下三种方式。 一. 值传递 1. 利用值传递方式,实际上是把实参的内容复制到形参中,实参和形参是存放在两个不同的内存空间中。在函数体内对形参的一切修改对实参都没有影响 2. 如果形参是类的对象,利用值传递的话每次都要调用类的构造函数构造对...

藏经阁 | 玄苦 1万+
上一篇: C++ string assign()赋值常用方法
下一篇: Tensorflow c++ 实践及各种坑
青松愉快
博客等级 码龄14年 71粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值