文章目录
前言
在上一篇文章中,详细的为大家介绍了 引用和指针的区别,这篇文章继续跟着我一起探究引用的底层吧。
1. 引用和临时数据
我们知道,指针就是数据或代码在内存中的地址,指针变量指向的就是内存中的数据或代码。这里有一个关键词需要强调,就是 内存,指针只能指向内存,不能指向寄存器或者硬盘,因为寄存器和硬盘没法寻址。
其实 C++ 代码中的大部分内容都是放在内存中的,例如定义的变量、创建的对象、字符串常量、函数形参、函数体本身、new
或 malloc()
分配的内存等,这些内容都可以用 &
来获取地址,进而用指针指向它们。
除此之外,还有一些我们平时不太留意的临时数据,例如表达式的结果、函数的返回值等,它们可能会放在内存中,也可能会放在寄存器中。一旦它们被放到了寄存器中,就没法用 &
获取它们的地址了,也就没法用指针指向它们了。
下面的代码演示了表达式所产生的临时结果:
int main()