C/C++ ---中函数值的传递方式

C++中函数值的传递方式为三种:值传递(Pass by value)、指针传递(Pass by pointer)、引用传递(Pass by reference)

void fun(char c) //---pass by value

void fun(char *str) //---pass by pointer

void fun(char &str) //---pass by reference

注:a.如果输入参数是以值传递的话,最好使用引用传递代替,因为引用传递省去了临时对象的构造和析构,可以减少耗费时间与空间;

    b.函数的类型不能省略,就算没有也要加个void;

1.值传递:有一个形参向函数所属的栈拷贝数据的过程,如果值传递的对象是类对象或是大的结构体对象,将耗费一定的时间和空间。
2.指针传递:同样有一个形参向函数所属的栈拷贝数据的过程,但拷贝的数据是一个固定为4字节的地址。
3.引用传递:同样有上述的数据拷贝过程,但其是针对地址的,相当于为该数据所在的地址起了一个别名。
效率上讲,指针传递和引用传递比值传递效率高。一般主张使用引用传递,代码逻辑上更加紧凑、清晰。
引用传递做函数参数”是C++的特性,C语言不支持。

 

以下例子转自:https://www.cnblogs.com/ducongcong/p/6912164.html

值传递:

void fun(int x){

x += 5; //修改的只是y在栈中copy x,x只是y的一个副本,在内存中重新开辟的一块临时空间把y的值 送给了x;这样也增加了程序运行的时间,降低了程序的效率。

}

void main(void){

int y = 0;

fun(y);

cout<<\"y = \"<<y<<endl; //y = 0;

}

指针传递:

void fun(int *x){

*x += 5; //修改的是指针x指向的内存单元值

}

void main(void){

int y = 0;

fun(&y);

cout<<<<\"y = \"<<y<<endl; //y = 5;

}

引用传递:

void fun(int &x){

x += 5; //修改的是x引用的对象值 &x = y;

}

void main(void){

int y = 0;

fun(y);

cout<<<<\"y = \"<<y<<endl; //y = 5;

}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值