c++中的传值调用

c++中的传值调用

void func(int num)
{
num++;
}
int main(){
int value=5;
func(value)
cout<<value;//此时输出的value值为5。
return 0;
}

在传值调用时,该段代码中的value值将其值5传给num,num会自动分配一个内存空间,存储值=5,然后进行num++,但在其执行完该函数后,这段内存空间就会自动释放,存储的num值6也无法传递给value,所以输出的value值仍为5。
为了解决这一问题,我们可以通过传地址方式来改变实参,通过传递指针,来间接改变实参

void func(int *pnum){
(*pnum)++}
int main()
{
int value=5;
func(&value);
cout<<value;//此时输出的value值为6.
return 0;

在该段代码中func函数传递的说value的地址,所以pnum指针指向的时value的地址,因此改变pnum所指的值就是改变value的值。

当然,我们也可以通过传递引用来直接改变实参的值

int &f(int *pint){
return *pint;}
int main(){
int a=10,b;
b=f(&a)*5;
f(&a)=88;
cout<<b<<" "<<a;//此时输出 50 88
return 0

需要注意的是,因为返回的引用是一个存储单元,所以函数返回后这个单元的生命期应该不会结束,否则返回值将没有意义。、
更多参考资料

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值