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的形参是变量的引用,在参数传递时,使形参为实参的引用。实参是变量名,而传递的却是变量的地址,因此是传址方式。

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