C++ 函数 参数传递方式
用函数调用所给出的实参(实际参数,actual arguments)向函数定义给出的形参(形式参数,formal arguments)设置初始值的过程,叫做参数传递(Argument Passing)。
在C++中调用函数时有三种参数传递方式:
(1)传值调用;
(2)传址调用(传指针);
(3)引用传递;
总体上参数传递可分为两类,由形参的类别决定:值调用(call by value)和引用调用(call by reference)。
这里传址调用被归为值调用,因为指针传递也是值传递,只不过值传递的是地址。
一、值传递
int main( )
{
void swap(int,int); //函数声明
int i=,j=;
swap(i,j); //调用函数swap
return ;
}
void swap(int a,int b) //企图通过形参a和b的值互换,实现实参i和j的值互换
{
int temp;
temp=a; //以下3行用来实现a和b的值互换
a=b;
b=temp;
}
在main()函数中调用swap(int a,int b)其中i和j值实际上并没有交换,如果想要交换只能使用指针传递或引用传递。
void swap(int* pa,int* pb)
void swap(int& ra,int& rb)
用指针类型作为形参的值调用方式,可以通过参数返回修改后的值。
void main( )
{
void swap(int *,int *);
int i=,j=;
swap(&i,&j); //实参是变量的地址
}
void swap(int *p1,int *p2) //形参是指针变量
{
int temp;
temp=*p1; //以下3行用来实现i和j的值互换
*p1=*p2;
*p2=temp;
}
二、引用传递
按引用传递,引用实参的引用参数传递给函数,而不是进行参数拷贝。引用类型的形参与相应的实参占用相同的内存空间,改变引用类型形参的值,相应实参的值也会随着变化。
int main( )
{
void swap(int &,int &);
int i=,j=;
swap(i,j);
return ;
}
void swap(int &a,int &b) //形参是引用类型
{
int temp;
temp=a;
a=b;
b=temp;
}
C++ 函数 参数传递方式的更多相关文章
- Python 关于Python函数参数传递方式的一点探索
关于Python函数参数传递方式的一点探索 by:授客 QQ:1033553122 实践代码 #!/usr/bin/env python # -*- coding:utf-8 -*- __author ...
- Java 函数参数传递方式详解 分类: Java Game 2014-08-15 06:34 82人阅读 评论(0) 收藏
转:http://zzproc.iteye.com/blog/1328591 在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式: A. 是按值传递的? B. ...
- Java函数参数传递方式详解
在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式: A. 是按值传递的? B. 按引用传递的? C. 部分按值部分按引用? 此处暂不宣布正确答案,我们通过一个简 ...
- python的函数参数传递方式
python的一切数据类型都是对象.但是python的对象分为不可变对象和可变对象.python的变量是引用,对python变量的赋值是引用去绑定该对象. 可变对象的数据发生改变,例如列表和字典,引用 ...
- C语言函数参数的传递详解
一.三道考题 开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行--唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, int y){ int tmp; ...
- python中的函数参数的传递
转载自: http://winterttr.me/2015/10/24/python-passing-arguments-as-value-or-reference/ 我想,这个标题或许是很多初学者的 ...
- Delphi_07_Delphi_Object_Pascal_基本语法_05_函数参数
这里主要讨论Delphi中函数.方法的相关内容. 一.工程文件 { Delphi语法方法和函数 1.方法 2.函数 } program Routine; {$APPTYPE CONSOLE} uses ...
- 深入理解javascript函数参数与闭包(一)
在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...
- 【整理】--C++三种参数传递方式
在C++中,共有三种参数传递方式: 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) (1)按值传递的过程为:首先计算 ...
随机推荐
- 使用java发送QQ邮件的总结
最近帮朋友做个网站,实现用邮箱订阅功能,所以现在把这个发送邮件的功能放在这里,算是这两天工作的总结吧! 首先,想要实现订阅功能,要把邮箱保存,但是这个做的是个小网站,前后台交互的太少了,所以我就直接保 ...
- JS控制上传文件个数
<html><body> <h3>js控制文件上传数量</h3> <form action="" enctype= ...
- 为什么继续选择DELPHI?
已经钻DELPHI很深了,当然现在DELPHI是过了最辉煌的时代.但为什么要继续下去,而不转向其它的?这是不是死脑筋? 我看了一下C#的LINQ的产生,然后又被实体框架所代替.思考了一下: 1)LIN ...
- Hadoop(1)-CentOS6.8的安装,配置和克隆
准备工作 150G及以上的硬盘空间(因为要搭建3个系统组成的集群),cpu尽量i7-7xxx标压以上,内存16G及以上 自行搜索,下载,安装VMWare 准备CentOS6.8的镜像文件 注意:安装虚 ...
- CTF-i春秋网鼎杯第一场misc部分writeup
CTF-i春秋网鼎杯第一场misc部分writeup 最近因为工作原因报名了网鼎杯,被虐了几天后方知自己还是太年轻!分享一下自己的解题经验吧 minified 题目: 一张花屏,png的图片,老方法, ...
- 快速链接bioconductor,以及安装“XML”
options(useHTTPS=FALSE, BioC_mirror="http://bioconductor.org") source("http://biocond ...
- 【转】WCF设置拦截器捕捉到request和reply消息
原文:https://www.cnblogs.com/yanglang/p/7063743.html 我们需要拦截消息,并把消息打印出来,那么我们就需要一个拦截器,叫做MessageInspector ...
- QQ开发技术资料集锦
1.GG2013:可在广域网部署运行的QQ高仿版 http://www.cnblogs.com/justnow/category/503400.html 2. 苏飞博客: C#仿QQ皮肤-皮肤控件窗体 ...
- ubuntu 装 mysql
sudo apt-get install mysql-server mysql-client
- vue-cli打包后,图片路径不对
在config文件夹下的 index.js 里面,查找build,在builid方法里面,添加一行:assetsPublicPath: './' 例: 在build文件夹下的utils.js里面,查找 ...