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++函数参数传递的3种方式以及优缺点

1 函数参数传递的3种方式比较 1 按值传递 #include using namespace std; void swap(int,int); int main() { int a=...

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

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

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

问题及代码 /* *copyright (c).2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:传值.cpp *作者:王力源 *完成日期:2016年9...

第2周项目1c/c++语言中函数参数传递的三种方式

问题及代码: /* 文件名称:项目0.cpp 作者:孙洁 完成日期:2015.9.8 问题描述:函数参数传递的三种方式 输入描述:两个数:2 3 程序输出:(1)2 3 ...

c/c++参数传递方式

形参和实参 形参:形式参数,函数声明、定义时的参数 实参:实际参数,就是函数调用时真正的参数 void f(int i);//i是形参 ... int main() { ...

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

问题及代码: /* *Copyright (c)2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目1函数参数传递的三种方式.cpp *作 ...

第二周实践项目(1)~C/C++语言中函数参数传递的三种方式

传值:#include void myswap(int,int); int main() { int a, b; printf("输入准备交换的两个整数:"); scanf("...
  • ZKX2015
  • ZKX2015
  • 2015年09月07日 17:00
  • 448

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

/* *Copyright(c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:test.cpp *作者:杨珺 *完成日期:2015年9月7日...

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

问题及代码: /* *Copyright(c) 2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:1.cpp *作 者:房斐 ...

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

问题及代码: [cpp] view plain copy   /*   * Copyright (c)2016,烟台大学计算机与控制工程学院   * Al...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C/C++参数传递的3种方式
举报原因:
原因补充:

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