C/C++参数传递的3种方式

转载 2015年11月19日 10:07:02

C/C++参数传递的3种方式
在C/C++程序设计中有3种参数传递方式
1. (单向)值传递
单向值传递一般用于C/C++程序中简单数据类型的数据作为参数传入。
#include <stdio.h>
int swap(int age1,int age2)
{
    int tmp = age1;
    age1 = age2;
    age2 = tmp;
    printf("%d %d\n",age1,age2);
    return 0;
}
int main()
{
    int age_1 = 20;
    int age_2 = 21;
    func1(age_1,age_2);
    printf("%d %d\n",age_1,age_2);
    return 0;
}
如上代码 age1,age2参数就是用于func1函数的输入的,虽在func1函数内部交换了age1和age2的值,但是在main函数中的age1 age2值仍然是20 21。这个就是单向传递,方向从调用函数中将值传递到被调函数中,在被调用函数中的任何对形参的改变都不会影响实参的值。
在C++程序中也可以使用这种方式,但是当单向传递的参数是结构体或者类类型的变量的时候咱们就不会考虑使用这种方法了。原因在方式2中说明。
2. 地址传递
将地址作为参数传递在C/C++中均可使用。
由第一种方式我们知道简单数据类型作为单向值传递很清晰简洁,对于复合的数据类型如果还是采用方式1的话就会带来不必要的开销。
此时我们考虑在C中使用方式2,在C++中优先考虑使用方式3.
#include <stdio.h>
int swap(int *age1,int *age2)
{
    int tmp = *age1;
    *age1 = *age2;
    *age2 = tmp;
    printf("%d %d\n",*age1,*age2);
    return 0;
}
int main()
{
    int age1 = 20;
    int age2 = 21;
    func1(&age1,&age2);
    printf("%d %d\n",age1,age2);
    return 0;
}
在以上代码中在主调函数中传递变量的地址,在被调函数中参数使用指针变量接受实参地址,通过对形参的解引用操作取出实参的值 借助临时变量实现两个指针指向的变量的值的交换。
方式2的中如果通过形参指针变量对其指向的地址写入了数据。那么函数在结束调用的时候写入数据的影响并不会消失。所以main函数中打印出21 20。
3. (双向)引用传递
由于引用是C++程序设计的概念,因此引用传递只能在C++程序中使用。
引用操作简单,在使用的时候当作简单的一个变量使用即可。如果在不深究期实现原理的情况下,可以简单的认为引用就是变量的一个别名即可。
#include <stdio.h>
int swap(int &age1,int &age2)
{
    int tmp = age1;
    age1 = age2;
    age2 = tmp;
    printf("%d %d\n",age1,age2);
    return 0;
}
int main()
{
    int age1 = 20;
    int age2 = 21;
    func1(age1,age2);
    printf("%d %d\n",age1,age2);
    return 0;
}
在C++程序设计中大量使用了对象的(常)引用,因此希望朋友们能够理解引用的用法。

C语言三种参数传递方式

C语言中存在三种参数传递方式,分别是值传递,地址传递,引用传递;三种方式之间形式参数的区别到底是什么?三种方式在内存中的操作到底是什么样的? 本文通过几个例子来分析、总结。...
  • u010414589
  • u010414589
  • 2015年11月12日 15:55
  • 632

C/C++中参数传递有两种方式,传值或传地址(传引用)

C/C++中参数传递有两种方式,传值或传地址(传引用)
  • rryr2
  • rryr2
  • 2011年04月21日 03:16
  • 4506

C语言的3种参数传递方式

参数传递,是在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程,方法有3种方式 值传递 地址传递 引用传递 tips: 被调用函数的形参只有函数被调用时...
  • u013097971
  • u013097971
  • 2017年09月14日 18:30
  • 206

C++的参数传递机制

C++的参数传递机制  C++一共有三种传递方式:值传递(pass by value)、指针传递(pass by pointer)、引用传递(pass by reference)。 关键点:在...
  • yu12345678900
  • yu12345678900
  • 2014年11月20日 22:05
  • 993

C语言/C++函数调用的三种参数传递方式

// 熟悉C++函数的三种参数传递方法:1传值(兼容C)。2传址(兼容C)。3传引用(C++特性)。 // 以下代码在VC++6.0里调试成功。 #include #include using std...
  • FightingEveryDay365
  • FightingEveryDay365
  • 2017年08月14日 16:40
  • 242

第二周 项目一 -C++语言中函数参数传递的三种方式

/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: *作 者:孙仁圆 *完成日期:2017年9月3日 *版 本 ...
  • renyuansun
  • renyuansun
  • 2017年09月03日 22:30
  • 197

3种函数参数传递方式

3种函数参数传递方式 1. 将变量名作为形参和实参 在这种情况下传给形参的是变量的值。传递是单向的,即如果在执行函数期间形参的值发生变化,并不传回给实参,这就是值传递方式。因为在调用函数期间,形参...
  • liubing8609
  • liubing8609
  • 2014年11月23日 14:50
  • 1736

MySQL的3种应用方式和3种数据库用途

介绍MySQL的3种应用方式和3种数据库用途
  • xiong452980729
  • xiong452980729
  • 2017年04月04日 19:28
  • 122

C++函数传递参数的方式有哪几种?

当进行函数调用时,要填入与函数形式参数个数相同的实际参数。 C++函数传递参数的方式有以下四种: (1) 值传递     当进行值传递时,就是将实参的值复制到形参中,而形参和实参不是同一个存储单...
  • u010339647
  • u010339647
  • 2017年09月04日 22:58
  • 767

C语言中函数参数传递的三种方式

/* * Copyright (c) 2015, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:cpp1.cpp * 作者:巩凯强 * 完成日期:...
  • gkq_comeon
  • gkq_comeon
  • 2015年09月07日 17:24
  • 3237
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C/C++参数传递的3种方式
举报原因:
原因补充:

(最多只允许输入30个字)