C++基础:3种传参方式

C++数据传递的三种方式:

①值传递(传值)

②指针传递(传址)

③引用传递(引用)  引用 是C++相对于C新加的

效果传值不改变外部对象,传址和引用改变外部对象。

说明:引用和传址其实一回事,最终的效果,就是函数使用地址改变了外部对象。 引用通过变量名和取址符(&)完成,传址通过指针完成。

</pre><span style="color: rgb(102, 0, 204); font-family: 宋体, Arial; font-size: 16px; line-height: 26px;">①值传递(传值)</span><pre name="code" class="cpp">#include <iostream>
using namespace std;

void f(int a) {
  cout<<"a= "<<a<<endl;
  a=5;
  cout<<"a= "<<a<<endl;
}

int main () {

  int x=47;
  cout<<"x= "<<x<<endl;
  f(x);
  cout<<"x= "<<x<<endl;
}


接口
void f(int a)
f(x);
函数参数只要求传入的是int型的变量。
函数调用时,只用到变量名本身。

②指针传递(传址)

#include <iostream>
using namespace std;

void f (int * p){

   cout<<"p= "<<p<<endl;
   cout<<"*p= "<<*p<<endl;
   *p=5;
   cout<<"p= "<<p<<endl;
}

int main() {

   int x =47;
   cout<<"x= "<<x<<endl;
   cout<<"&x= "<<&x<<endl;
   f(&x);
   cout <<"x= "<<x<<endl;
}

接口

void f (int * p)
f(&x);
函数参数表明是一个int型的指针。
函数调用时,所以使用了取址符(&)。指针是存地址的变量,换句话,指针就是地址。所以需要加上取址符。这也是为什么叫做传址。
&x,就是将x的地址传给函数,而不是x自己。

③引用传递(引用)
 

#include <iostream>
using namespace std;

void f(int & r) {

  cout << "r= "<<r<<endl;
  cout <<"&r= "<<&r<<endl;
  r=5;
  cout<<"r= "<<r<<endl;
}

int main() {

  int x=47;
  cout << "x= "<<x<<endl;
  cout<<"&x= "<<&x<<endl;
  f(x);
  cout<<"x= "<<x<<endl;
}

void f(int & r)
f(x);
跟传值的形式类似。但是函数f的参数类型不一样,使用了int&表示传入的变量将以引用的方式处理。也就是说,相当于引用了变量x的地址到函数里,在本函数内的操作,仍然使用变量名x操作,只不过将会影响到变量本身。

说明:①:引用被创建的同时必须被初始化

      ②:指针则可以在任何时候初始化


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值