C++函数传递参数的方式

1、值传递
当进行值传递时,就是将实参的值复制到形参中,而实参和形参不是在同一个存储单元,所以函数调用结束后,实参的值不会发生改变。

#include<iostream>
using namespace std;
void swap(int a,int b)
{
      int temp;
      temp=a;
      a=b;
      b=temp;
      cout<<a<<","<<b<<endl;
}

int main()
{
     int x=1;
     int y=2;
     swap(x,y);
     cout<<x<<","<<y<<endl;
     return 0;
}
//程序的输出结果为
//2,1
//1,2

2、指针传递
当进行指针传递时,形参是指针变量,实参是一个变量的地址,调用函数时,形参(指针变量)指向实参变量的单元,在函数中改变的不是实参的值,而是实参地址所指向的变量的值。

#include<iostream>
using namespace std;
void swap(int *a,int *b)
{
      int temp;
      temp=*a;
      *a=*b;
      *b=temp;
      cout<<*a<<","<<*b<<endl;
}

int main()
{
     int x=1;
     int y=2;
     swap(&x,&y);
     cout<<x<<","<<y<<endl;
     return 0;
}
//程序的输出结果为
//2,1
//2,1

3、传引用
实参地址传递给形参,使形参的地址取实参的地址,从而使形参与实参共享同一单元的方式。

#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
      int temp;
      temp=a;
      a=b;
      b=temp;
      cout<<*a<<","<<*b<<endl;
}

int main()
{
     int x=1;
     int y=2;
     swap(x,y);
     cout<<x<<","<<y<<endl;
     return 0;
}
//程序的输出结果为
//2,1
//2,1

4、全局变量传递
这里的“全局”变量并不见得就是真正的全局,只要这个变量的作用域足够这两个函数访问就可以了,比如一个类中的两个成员函数可以使用一个成员变量实现参数传递,或使用static关键字定义,或使用namespace进行限定等,而这里的成员变量在这种意义下就可成为“全局”变量。当然也可以使用一个类外的真正的全局变量来实现参数传递。
全局变量传递的优点是效率高,但它对多线程的支持不好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值