LinuxC/C++基础——引用

1.引用(Reference)

1.1引用的基本语法

引用是C++对C的重要扩充,也存在与其他一些编程语言中,并不是C++的发明。通过引用,C++增加了

另外一种给函数传递地址的途径,这就是按引用传递(pass-by-reference)

引用就是已定义变量的别名

void test01(){

    int a = 10;
    //给变量a取一个别名b,语法:Type& ref = val;
    int& b = a;
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;
    cout << "------------" << endl;
    //操作b就相当于操作a本身
    b = 100;
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;
    cout << "------------" << endl;
    //一个变量可以有n个别名
    int& c = a;
    c = 200;
    cout << "a:" << a << endl;
    cout << "b:" << b << endl;
    cout << "c:" << c << endl;
    cout << "------------" << endl;
    //a,b,c的地址都是相同的
    cout << "a:" << &a << endl;
    cout << "b:" << &b << endl;
    cout << "c:" << &c << endl;
}

 

 使用引用的注意事项

void test02(){
    //1) 引用必须初始化
    //int& ref; //报错:必须初始化引用
    //2) 引用一旦初始化,不能改变引用
    int a = 10;
    int b = 20;
    int& ref = a;
    ref = b; //不能改变引用
    //3) 不能对数组建立引用
    int arr[10];
    //int& ref3[10] = arr;
}

 1.2函数中的引用

最常见引用的地方实在函数的参数和返回值中。当引用被用作函数参数的时候,在函数内对任何引用的修改,将对函数外的参数

产生改变。相对比指针,引用具有更加清晰的语法。

void ValueSwap(int m,int n){
    int temp = m;
    m = n;
    n = temp;
}
//地址传递
void PointerSwap(int* m,int* n){
    int temp = *m;
    *m = *n;
    *n = temp;
}
//引用传递
void ReferenceSwap(int& m,int& n){
    int temp = m;
    m = n;
    n = temp;
}
void test(){
    int a = 10;
    int b = 20;
    //值传递
    ValueSwap(a, b);
    cout << "a:" << a << " b:" << b << endl;
    //地址传递
    PointerSwap(&a, &b);
    cout << "a:" << a << " b:" << b << endl;
    //引用传递
    ReferenceSwap(a, b);
    cout << "a:" << a << " b:" << b << endl;
}

 

猜你喜欢

转载自www.cnblogs.com/xiangdongBig1/p/12064517.html