c++中的引用与指针
指针:
指针是c++最明显的特点,它的出现为语言的编写和内存的规划提供了很多的便利与优化。然而在我们学习c++的过程中,指针也是最难以被大部分人理解的内容,它难以上手,难以掌握难以理解。如何理解指针:
试想一下,当你需要找一个人,你知道他的家在哪,你也在之前和他约定好,让他在他家里等你,那么找这个人的下一步很显而易见就应当是去这个人家里找他。
在c++与内存中,这个人就是我们要访问的数据,我们把他放到我们想要他在的目标内存块中,并且把这块内存块的地址记下来,指针就是对他地址的记录。
如果我们想找到这个人,就可以用指针去访问来得到地址,或者换句话说,指针变量所存储的是地址,其他变量存储的往往是变量或者内容,这是指针的特点。
引用:
引用是c++在发展中对指针的优化,更难理解了。但好处是弄明白后很好用试想这样一个事情,我们还是用刚才的例子,我们找人,知道地址。这时我们发现,这个人的家的地址有两种说法,我们可以说他住在xx大学,也可以说他住在xx街道的xx号。这两个地址看起来不同,但实际上说的是一个地方。引用是实现的效果就是这样,为一个人提供两个访问的方式,比如:
int a=10;
int &b=a;
b++;
cout<<b;
这时候代码中的b是引用,简单理解来说可以被认为是a的“别名”,是a的另一种说法,对b的操作就是对a的操作,对a的操作就是对b的操作
引用的实质
引用的实质是一个指针常量,这个常量不可变并且会被写入全局变量。编译器会将上面 &的引用 自动转化为 int * const b=&a;并在之后每次检测到 b 时都转化为 *b;
并且由于引用是一个指针常量,所以他不可以被更改。
我们可以认为是对指针的一种优化,他让我们可以更高效的编写程序。