C\C++中函数参数的三种传递方式
转自:https://www.cnblogs.com/tanjuntao/p/8678927.html
还是看原文的格式更舒服些
一、值传递
这种传递方式中,实参和形参是两个不同的地址空间,参数传递的实质是将原函数中变量的值,复制到被调用函数形参所在的存储空间中,这个形参的地址空间在函数执行完毕后,会被回收掉。整个被调用函数对形参的操作,只影响形参对应的地址空间,不影响原来函数中的变量的值,因为这两个不是同一个存储空间。
二、引用传递
这种传递方式中,形参是引用类型变量,其实是实参的一个别名,在被调用函数中,对引用变量的所有操作等价于对实参的操作。整个被调用函数对形参的操作执行完毕后,原先的实参的值也会发生改变。
三、指针传递
这种传递方式中,实参是变量的地址{swap(&a,&b);},形参是指针类型的变量。在函数中对指针变量的操作,就是对实参(变量地址)所对应的变量的操作。整个被调用函数对形参的操作执行完毕后,原函数中的变量的值将会发生改变。
代码如下:
#include<iostream>
using namespace std;
//值传递 交换前a=1,b=2;交换后a=1,b=2;
void swap(int a,int b){
int temp=a;
a=b;
b=temp;
}
//引用传递 交换前a=1,b=2;交换后a=2,b=1;
void swap(int &a,int &b){
int temp=a;
a=b;
b=temp;
}
//指针传递 交换前a=1,b=2;交换后a=2,b=1;
void swap1(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp;
}
//主函数
int main(){
int a=1;
int b=2;
cout<<"交换前"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
swap(a,b);//值传递和引用传递
swap1(&a,&b);//指针传递
cout<<"交换后"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
return 0;
}
C\C++中函数参数的三种传递方式相关推荐
- c语言 函数参数传递 值传递,c语言中函数参数的三种传递方式——值传递、指针传递、引用传递...
函数参数有三种传递方式值传递.指针传递.引用传递. 1.值传递 将已经初始化的变量值(或常量)传递到函数中. 例如: int func(int value) { int ret = value++; ...
- python中函数参数传递的三种方式_python中函数参数传递的几种方法
转自 http://www.douban.com/note/13413855/ Python中函数参数的传递是通过"赋值"来传递的.但这条规则只回答了函数参数传递的"战 ...
- 项目1- C/C++语言中函数参数传递的三种方式
<span style="font-size:18px;">问题及代码:</span> <span style="font-size:18p ...
- c/c++语言中函数参数传递的三种方式——徐吉平
此篇为本人处女作,希望大家多多指正 1.这是c/c++中的函数传值方式,函数中只交换了 形参x,y的数值,而实参a,b的值并没有发生变化 #include <stdio.h> void m ...
- python中的函数参数主要有四种_python3中函数参数的四种简单用法
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 第2周项目1c++语言中函数参数传递的三种方式
copyright (t) 2017,烟台大学计算机学院*All rights reserved.*文件名称:1.cpp*作者:邵雪源*完成日期:2017年9月7日*版本号:v1.0 */ #incl ...
- c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
C++编程优与Pascal的原因之一是C++中存在STL(标准模板库).STL存在很多有用的方法. C++模板库中的许多方法都需要相关参数有序,例如Sort().显然,如果你想对一个集合进行排序,你必 ...
- 函数参数三种传递方式的区别
函数参数三种传递方式的区别 问题提出: 1.当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别? 比如: DateType ExampleFun(CString &strFileN ...
- C语言中比较大小的函数模板,关于C++中定义比较函数的三种方法
关于C++中定义比较函数的三种方法 C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之.以下,小编为大家介绍关于C++中定义比较函数的三种方法,供 ...
最新文章
- 0523-学习进度条
- Python正则表达式介绍 re.findall(pattern, str, flag=0)/re.I re.L re.M
- 如何做Teams Bot的测试覆盖
- linux输入qsub显示错误,linux – 使用qsub运行shellscript的’意外的文件结束’和’错误导入功能定义’错误...
- 中科院单细胞分析算法开发博士带你做单细胞转录组分析
- 还是畅通工程1233
- Haystack全文搜索
- VisualStudio2019 DLL生成并使用教程(C++)最详细Demo教程
- 同时生成 Release版和Debug版DLL的方法
- InDesign 教程,如何创建沉浸式文档?
- 【TFS 2017 CI/CD系列 - 01】-- Agent篇
- fclk if总线_技嘉B550手把手超频指南,光威血影为例
- java 将map转List对象
- 南开100题C语言(001-010)
- Java远程开关机(全过程)
- 高标准农田建设通则2014
- html内边距的顺序,html中内边距和外边距之间的区别是什么? - 收获啦
- 张勋说:关于棒磨机的历史 你了解多少?(图文)
- java中事务一致性学习及其解决方案
- 如何利用长尾关键词挖掘推广旅游业
热门文章
- 服务器发送二进制文件大小,如何从dotnet核心服务器向SignalR客户端发送二进制文件...
- 将腾讯视频Qlv格式转为MP4格式(亲测可用)
- iOS音频播放 (三):AudioFileStream
- 结合泛函极值_泛函极值与变分法
- APE-Gen:锚定肽-MHC集合生成器
- vue的基础练习实例
- Unity3D 设置帧频及显示FPS
- 风能matlab仿真_风能产量预测—深度学习项目
- Windows WiFi 热点共享 debug Android
- 安装gensim失败,各种方法未果,最后注意到 error: Microsoft Visual C++ 14.0 or greater is required,终于解决