用函数调用所给出的实参(实际参数,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++ 函数 参数传递方式的更多相关文章

  1. Python 关于Python函数参数传递方式的一点探索

    关于Python函数参数传递方式的一点探索 by:授客 QQ:1033553122 实践代码 #!/usr/bin/env python # -*- coding:utf-8 -*- __author ...

  2. Java 函数参数传递方式详解 分类: Java Game 2014-08-15 06:34 82人阅读 评论(0) 收藏

    转:http://zzproc.iteye.com/blog/1328591 在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式:  A. 是按值传递的?  B. ...

  3. Java函数参数传递方式详解

    在阅读本文之前,根据自己的经验和理解,大家可以先思考并选择一下Java函数的参数传递方式: A. 是按值传递的? B. 按引用传递的? C. 部分按值部分按引用? 此处暂不宣布正确答案,我们通过一个简 ...

  4. python的函数参数传递方式

    python的一切数据类型都是对象.但是python的对象分为不可变对象和可变对象.python的变量是引用,对python变量的赋值是引用去绑定该对象. 可变对象的数据发生改变,例如列表和字典,引用 ...

  5. C语言函数参数的传递详解

    一.三道考题 开讲之前,我先请你做三道题目.(嘿嘿,得先把你的头脑搞昏才行--唉呀,谁扔我鸡蛋?)考题一,程序代码如下:void Exchg1(int x, int y){   int tmp;    ...

  6. python中的函数参数的传递

    转载自: http://winterttr.me/2015/10/24/python-passing-arguments-as-value-or-reference/ 我想,这个标题或许是很多初学者的 ...

  7. Delphi_07_Delphi_Object_Pascal_基本语法_05_函数参数

    这里主要讨论Delphi中函数.方法的相关内容. 一.工程文件 { Delphi语法方法和函数 1.方法 2.函数 } program Routine; {$APPTYPE CONSOLE} uses ...

  8. 深入理解javascript函数参数与闭包(一)

    在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...

  9. 【整理】--C++三种参数传递方式

    在C++中,共有三种参数传递方式: 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass by reference) (1)按值传递的过程为:首先计算 ...

随机推荐

  1. sql三表查询

    情景: student  id    stname    sex score   scoreid  stname  birth course id    coursename  age 简单说明  a ...

  2. 【敏捷实用工具】JIRA介绍以及使用方法

    敏捷开发并不是由敏捷工具来推动的.但是没有敏捷工具的支持,就很难进行各种软件工程的相关事件,工具的作用是约束和流程,正确使用敏捷工具可以事半功倍,实践敏捷.近几年来敏捷开发催生大量敏捷工具的产生,在敏 ...

  3. python 第一课作用

    1.使用while循环输入 1 2 3 4 5 6     8 9 10 x=0while x<10: x=x+1 if x==7: print(' ') continue print(x)#学 ...

  4. jQuery学习-访问设置元素内容

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. [NOIp2016]天天爱跑步 线段树合并

    [NOIp2016]天天爱跑步 LG传送门 作为一道被毒瘤出题人们玩坏了的NOIp经典题,我们先不看毒瘤的"动态爱跑步"和"天天爱仙人掌",回归一下本来的味道. ...

  6. 2_C语言中的数据类型 (七)类型限定

    1.1       类型限定 1.1.1          const const是代表一个不能改变值的常量 1.1.2          volatile 代表变量是一个可能被CPU指令之外的地方改 ...

  7. 单元测试 java调用不同包下的类时,出现 NoClassDefFoundError 的解决方案

    网上查了下,原因很多: https://blog.csdn.net/u013065023/article/details/71171373 不过只需要在做单元测试时把相应的类放到单元测试所在类的同包下 ...

  8. Linux 挂载 xshell 命令 配置环境变量

  9. 如何把项目通过git上传之github完整教程

    作为一个有追求的程序员,需要撸点自己的开源项目,虽然我现在只是在学着造轮子,但这并不影响我成为大神的心.Github是基于git实现的代码托管,很多程序员在上面托管自己的开源项目,我使用Github也 ...

  10. pycharm字体放大缩小设置

    放大设置 File —> settings—> Keymap —>在搜寻框中输入:increase —> Increase Font Size(双击) —> 在弹出的对话 ...