#include <iostream>
int main(int argc,char *argv[])
{
int intone=5;
int &rint=intone;
int inttwo=6;
rin t=inttwo;
std::cout<<"intone="<<intone<<std::endl;
std::cout<<"rint="<<rint<<std::endl;
rint=10;
std::cout<<"intone="<<intone<<std::endl;
std::cout<<"rint="<<rint<<std::endl;
std::cout<<"&intone="<<&intone<<std::endl;
std::cout<<"&rint="<<&rint<<std::endl;
}
int a;
int& ra=a;
int& *p=&ra咆课; //error企圖定義一個引用的指針
引用不能用的類型來初始化
int &ri=NULL;
int &ri=int;
函數(shù)的指針與引用
#include <iostream>
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
int main()
{
int x=10,y=20;
swap(x,y);
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
}
如果把引用作為返回值末誓,他也不能把局部變量的地址返回出來
#include <iostream>
int &test()
{
int temp=12;
return temp;
}
int main()
{
int &x=test();
std::cout<<"x="<<x<<std::endl;
}
- temp的生命周期僅局限于&test函數(shù)的},結(jié)果會被釋放扯俱。
- 函數(shù)會報警告,但是最后的結(jié)果也可以顯示12喇澡,因為系統(tǒng)內(nèi)部產(chǎn)生一個臨時變量迅栅,存儲temp值。
- 用static int temp就不會出現(xiàn)警告晴玖。
引用存在問題
int a=5,b=6;
swap(a,b);//會不清楚到底是引用還是傳參读存。
使用引用作為參數(shù)和返回值給函數(shù)的意義
函數(shù)只能返回一個值,
解決問題的方法是傳遞兩個參數(shù)呕屎。
#include<iostream>
using namespace std;
double& fn(const double& pd) //const作為參數(shù)
{
static double ad=3;
ad+=pd;
cout<<"fn being called..the value is:"<<pd<<endl;
return ad;
}
int main()
{
double a=3.6;
double& pa=fn(a);
cout <<pa <<endl;
a=5.4;
pa = fn(a);
cout <<pa <<endl;
return 0;
}
//6.6 12