<1>值传递 :形参获得值之后与实参脱离关系
<2>引用
首先,引用的定义和使用如下:
#include<iostream>
using namespace std;
int main()
{
int a=56;
int &ai=a;
cout<<"a="<<a<<" ai="<<ai<<endl;
a=96;
cout<<"a="<<a<<" ai="<<ai<<endl;
ai=15;
cout<<"a="<<a<<" ai="<<ai<<endl;
return 0;
}
代码的运行结果是:a=56 ai=56
a=96 ai=96
a=51 ai=51
当a消失之后,他的引用ai,也就没有意义了,只是指向原先a的地址,但是存在的是垃圾值
#include<iostream>
using namespace std;
int main()
{
int *p;
p=new int(6);
int &rpa=*p;
*p=7;
cout<<rpa<<" "<<*p<<endl;
rpa=4;
cout<<"rpa_addr"<<&rpa<<endl;
cout<<rpa<<" "<<*p<<endl;
delete p;
cout<<rpa<<endl;
cout<<"rpa_addr"<<&rpa<<endl;
return 0;
}
ai一旦作为了a的引用那么其只能作为a的引用,不可再作为其他变量的引用, 当a的值变化时,ai也要随之变化。
当把引用作为形参时,当调用函数时候,引用类型的形参就通过形实结合,成为了实参的别名,当函数内的语句作用于形参是也就相当于作用于实参。
void swap(int &a,int &b){}