對變量的引用其實是爲一個變量起一個別名。
常見的形式爲:int &b = a; 該語句就聲明b是a的引用
引用的實質:還是指針。聲明b是a的引用,是在內存中爲b開闢了一個指針型的存儲單元,用來存放a的地址。輸出b時,就輸出b指向的a的值,就相當於*b。所以引用就是一個指針常量,只能指向一個指定的變量。
應用:將引用作爲函數參數,實現參數傳遞方式中的地址傳遞方式。
舉例:以最常見的兩個變量交換爲例
#include<iostream>
#include<math.h>
using namespace std;
void swap1(int *p1, int *p2)
{
int temp;
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void swap2(int &a,int &b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int a,b;
a = 1;
b = 2;
swap1(&a,&b);
swap2(a,b);
cout<<a<<b<<endl;
return 0;
}
函數swap1的形參是指針變量,可以實現main函數中兩個變量的交換。實參是地址,傳遞的也是地址,故這種函數參數傳遞的方式仍是“值傳遞”方式,只不過傳遞的是變量的地址罷了。
而函數swap2的形參是變量的引用,在參數傳遞時,使形參爲實參的引用。實參是變量名,而傳遞的卻是變量的地址,因此是傳址方式。