很多从 C / Java / Android 转到 C++ 的工程师,都会在一个地方卡住:
int& r = x;
这个“引用”到底是个什么东西?
甚至会产生很强的违和感:
👉C 语言里根本没有int&这种写法。
是的,这是关键点。
这篇文章专门讲清楚一件事:
✅ 引用不是指针
✅ 引用不是语法糖
✅ 引用是 C++ 新引入的一层“语言抽象”
一、先给结论:引用是 C++ 新创造的概念
👉C 语言里只有“指针”,没有“引用”。
C 语言只有这一套模型:
int x = 10; int* p = &x;- 变量是内存
- 指针是地址
- & 取地址 ——解引用
👉 一切都是“内存和地址”。
而 C++ 新增了一种东西:
int x = 10; int& r = x;这不是新内存,不是新地址,而是 C++ 语言层规定了一种新语义:
👉r 是 x 的另一个名字。
从这一刻开始:
r = 20;等价于:
x = 20;二、引用的本质:不是新对象,而是“别名”
很多人理解不了引用,是因为总在想:
❌ r 在哪块内存?
❌ r 是不是内部偷偷是个指针?
这些对“写代码”来说都不重要。
你只需要记住一句工程级定义:
👉引用,不是一个新对象,是已有对象的“别名(alias)”。
就像一个人:
身份证名:张三
小名:三哥
👉 名字不同,人是同一个。