C/C++函数参数传递时值传递、指针传递、引用传递的区别是什么?

值传递:形参是实参的副本(复制、拷贝),形参值的改变不会影响实参的值,大家初学函数时接触到的第一个传参例子都为这种。

指针传递:形参是指针类型,形参作指针运算后指向的就是实参,所以会影响实参的值。

引用传递:在调用函数时将实参的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实参的值。

引用传递与指针传递的区别:
引用传递是把实参的内存引用空间(所谓引用空间,即数据在内存中的地址)传递给形参,形参与实参具有相同的引用空间,引用传递在函数定义和调用时并没有用到指针运算符
而指针传递传递的是指针值,实参和形参都是指针,指针传递时要用到指针运算符进行相关数据的操作指针操作是容易出问题的,所以通常我们能避免指针操作就避免指针操作,所以通常我们用的都是值传递和引用传递

下面对三种情况分别举例

值传递的例子

void swap(int a,int b)//形参也可以是对象之类的哦
{
     int temp;
     temp=a;
     a=b;
     b=temp;
     cout<<a<<’ ‘<<b<<’\n’;
}

int main(){
     int x=1;
    int y=2;
    swap(x,y);
    cout<<x<<’ ‘<<y<<’\n’;
    
    return 0;
}

运行结果是2,1 和1,2,函数swap()没有改变实参x、y的值。

指针传递的例子

void swap(int *a,int *b)
{
     int temp;
     temp=*a;
     *a=*b;
     *b=temp;
     cout<<*a<<’ ‘<<*b<<’\n’;
}

int main(){

   int x=1;
    int y=2;
    swap(&x,&y);
    cout<<x<<’ ‘<<y<<’\n’;

}

运行结果是:2,1和2,1,函数swap()改变了实参x、y的值。

引用传递的例子

void swap(int &a,int &b)
{
     int temp;
     temp=a;
     a=b;
     b=temp;
     cout<<a<<’ ‘<<b<<’\n’;
}

int main(){
    
    int x=1;
    int y=2;
    swap(x,y);
    cout<<x<<’ ‘<<y<<’\n’;
    return 0;
}

运行结果是:2,1和2,1,函数swap()改变了实参x、y的值。

扩展阅读:

为什么引用传递的参数名前通常都用const作了修饰?​​​​​​​


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值