写点什么

C++ 引用和指针:内存地址、创建方法及应用解析

作者:小万哥
  • 2024-04-11
    广东
  • 本文字数:1221 字

    阅读完需:约 4 分钟

C++ 引用和指针:内存地址、创建方法及应用解析

C++ 引用和指针

创建引用

引用变量是对现有变量的“别名”,它是使用 & 运算符创建的:


string food = "Pizza"; // 食物变量string &meal = food;   // 对 food 的引用
复制代码


现在,我们可以使用变量名 food 或引用名 meal 来引用食物变量:


cout << food << "\n"; // 输出 Pizzacout << meal << "\n"; // 输出 Pizza
复制代码

C++ 内存地址

内存地址

在前一页的示例中,使用 & 运算符创建了一个引用变量。但它也可以用于获取变量的内存地址;即变量在计算机上存储的位置。


当在 C++ 中创建一个变量时,会为该变量分配一个内存地址。当我们给变量赋值时,它将存储在这个内存地址中。


要访问它,使用 & 运算符,结果将表示变量存储的位置:


string food = "Pizza";
cout << &food; // 输出 0x6dfed4
复制代码


注意:内存地址以十六进制形式表示(0x..)。注意你可能在你的程序中得不到相同的结果。

为什么知道内存地址很有用呢?

引用和指针在 C++ 中非常重要,因为它们使你能够操作计算机内存中的数据 - 这可以减少代码并提高性能。


这两个特性是使 C++ 与其他编程语言(如 Python 和 Java)不同的因素之一。

C++ 指针

创建指针

可以使用 & 运算符获取变量的内存地址:


string food = "Pizza"; // 类型为 string 的食物变量
cout << food; // 输出 food 的值(Pizza)cout << &food; // 输出 food 的内存地址(0x6dfed4)
复制代码


然而,指针是一种将内存地址作为其值的变量。


指针变量指向相同类型的数据类型(如 intstring),并使用 * 运算符创建。将正在处理的变量的地址分配给指针:


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,关注后即可获取最新文章推送


看完如果觉得有帮助,欢迎点赞、收藏、关注

发布于: 刚刚阅读数: 2
用户头像

小万哥

关注

代码如人生 2023-02-09 加入

编程爱好者

评论

发布
暂无评论
C++ 引用和指针:内存地址、创建方法及应用解析_程序人生_小万哥_InfoQ写作社区