课程咨询 :15948779800

保险公司承保达内学员学习效果

  • C/C++中3种参数传值的方式总结

    发布:长春达内      来源:达内      时间:2015-11-18

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

    在C/C++程序设计中有3种参数传递方式

    1. (单向)值传递

    单向值传递一般用于C/C++程序中简单数据类型的数据作为参数传入。

    #include

    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

    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

    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++内存泄露检查的5个方法

下一篇:C++是什么?

最新开班日期  |  更多

c++--零基础周末班

c++--零基础周末班

开班日期:7月31日

c++--零基础全日制班

c++--零基础全日制班

开班日期:7月31日

c++--全日制就业班

c++--全日制就业班

开班日期:7月31日

c++--免费训练营

c++--免费训练营

开班日期:7月24日

  • 地址:长春市卫星广场成基商务A座9楼
  • 课程培训电话:15948779800     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56