引用(变量的别名)

    xiaoxiao2021-04-19  212

    引用的本质,就是变量的别名。通俗地讲就是变量的绰号,任何对变量引用的操作都相当于操作变量本身。如下:

    # include <iostream> using namespace std; int main() {     int val = 1;     int& p = val;     //p是val的别名     cout<<p<<" "<<val<<endl;    //输出1 1          p = 2;     cout<<p<<" "<<val<<endl;    //输出2 2            val = 3;     cout<<p<<" "<<val<<endl;     //输出3 3          return 0; }

    引用和指针的区别:

    1. 初始化的要求不同。

    引用在声明的时候必须初始化(而指针则不是必须),就像给一个人取外号,这个人首先必须要存在。引用不可能存在空引用(需要初始化),而指针可以为NULL空指针。如下:

    int val = 1; int& p = val; //p是val的别名,引用必须初始化 int* p; p = &val; //指针可以在需要的时候完成指针的初始化 2. 对重新关联的要求不同。

    引用从一而终,指针说变就变。引用就是变量本身,是别名而已,固定不变;而指针是一个变量,是可以变的,即可以重新被赋值。

    # include <iostream> using namespace std; //引用与指针对重新关联的要求不同:前者就是本身别名从一而终永不改变关联性;后者是变量,水性杨花可以变 int main() { int x = 0; int& r = x; //引用:r是x的别名 int* p = &x; //指针 cout<<r<<" "<<x<<" "<<p<<endl; int y = 1; r = y;//这条语句不是重新改变r引用的变量,而是对其进行赋值,此时引用r和变量x的值都为1 p = &y;//重新改变指针p所指向的变量,此时指针p的值发生了变化 cout<<r<<" "<<x<<" "<<p<<endl; return 0; }

    引用的目的:

    引用的主要应用就是传递函数的参数和返回值,与指针类似却也有些不同。哪里不同,见下面

    引用与指针在传递函数参数和返回值的不同:

    # include <iostream> using namespace std; //三种传递函数参数和返回值的方法总结 int func1(int x) { return x+1; } void func2(int& x) { ++x; } void func3(int* x) { *x += 1; } int main() { int x = 1; func1(x); cout<<x<<endl; //x不变还是1 func2(x); cout<<x<<endl; //x = 2 func3(&x); cout<<x<<endl; //x = 3 return 0; }以上出三种传递函数参数和返回值的方法总结,即可看出引用与指针在传递函数参数和返回值的不同。既然功能类似,那么如何选择引用和指针呢?

    转载请注明原文地址: https://ju.6miu.com/read-676039.html

    最新回复(0)