c++變量的引用和指針

對變量的引用其實是爲一個變量起一個別名。
常見的形式爲: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的形參是變量的引用,在參數傳遞時,使形參爲實參的引用。實參是變量名,而傳遞的卻是變量的地址,因此是傳址方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章