引用变量是对现有变量的“别名”,它是使用 &
运算符创建的:
string food = "Pizza"; // 食物变量
string &meal = food; // 对 food 的引用
现在,我们可以使用变量名 food
或引用名 meal
来引用食物变量:
cout << food << "\n"; // 输出 Pizza
cout << meal << "\n"; // 输出 Pizza
在前一页的示例中,使用 &
运算符创建了一个引用变量。但它也可以用于获取变量的内存地址;即变量在计算机上存储的位置。
当在 C++ 中创建一个变量时,会为该变量分配一个内存地址。当我们给变量赋值时,它将存储在这个内存地址中。
要访问它,使用 &
运算符,结果将表示变量存储的位置:
string food = "Pizza";
cout << &food; // 输出 0x6dfed4
注意:内存地址以十六进制形式表示(0x..)。注意你可能在你的程序中得不到相同的结果。
引用和指针在 C++ 中非常重要,因为它们使你能够操作计算机内存中的数据 - 这可以减少代码并提高性能。
这两个特性是使 C++ 与其他编程语言(如 Python 和 Java)不同的因素之一。
可以使用 &
运算符获取变量的内存地址:
string food = "Pizza"; // 类型为 string 的食物变量
cout << food; // 输出 food 的值(Pizza)
cout << &food; // 输出 food 的内存地址(0x6dfed4)
然而,指针是一种将内存地址作为其值的变量。
指针变量指向相同类型的数据类型(如 int
或 string
),并使用 *
运算符创建。将正在处理的变量的地址分配给指针:
string food = "Pizza"; // 类型为 string 的食物变量
string* ptr = &food; // 指针变量,名为 ptr,存储 food 的地址
// 输出 food 的值(Pizza)
cout << food << "\n";
// 输出 food 的内存地址(0x6dfed4)
cout << &food << "\n";
// 使用指针输出 food 的内存地址(0x6dfed4)
cout << ptr << "\n";
*
(string* ptr
)创建一个名为 ptr
的指针变量,它指向一个字符串变量。注意指针的类型必须与你正在处理的变量的类型匹配。&
运算符存储名为 food
的变量的内存地址,并将其分配给指针。ptr
持有 food
的内存地址的值。提示:声明指针变量有三种方式,但第一种方式是首选的:
string* mystring; // 首选
string *mystring;
string * mystring;
特性 | 引用 | 指针 |
---|---|---|
初始化 | 必须初始化 | 可以不初始化 |
可空 | 不允许空引用 | 允许空指针 |
可变性 | 一旦初始化就不能改变引用指向的变量 | 可以改变指针指向的变量 |
解引用 | 不需要解引用 | 需要解引用 |
效率 | 通常比指针更有效率 | 通常比引用效率低 |
总而言之,引用和指针都是 C++ 中强大的工具,可以用于高效地操作内存和数据。选择使用引用还是指针取决于具体情况。
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。