• C++指针常量,常量指针以及, 引用和指针的区别


    const修饰指针有三种情况

    1. const修饰指针   --- 常量指针

    2. const修饰常量   --- 指针常量

    3. const即修饰指针,又修饰常量

            

    1. ```c++
    2. int main() {
    3. int a = 10;
    4. int b = 10;
    5. //const修饰的是指针,常量指针,指针指向可以改,指针指向的值不可以更改
    6. const int * p1 = &a;
    7. p1 = &b; //正确
    8. //*p1 = 100; 报错
    9. //const修饰的是常量,指针指针常量,指针指向不可以改,指针指向的值可以更改
    10. int * const p2 = &a;
    11. //p2 = &b; //错误
    12. *p2 = 100; //正确
    13. //const既修饰指针又修饰常量
    14. const int * const p3 = &a;
    15. //p3 = &b; //错误
    16. //*p3 = 100; //错误
    17. system("pause");
    18. return 0;
    19. }
    本质: ** 引用的本质在 c++ 内部实现是一个指针常量 .** (指针常量 指正常量的 指向不可修改,指向的值可以修改)
    1. #include
    2. #include
    3. #include
    4. using namespace std;
    5. int main()
    6. {
    7. int a = 10;
    8. int b = 20;
    9. int &c = a;
    10. cout << &c << endl;
    11. cout << &a << endl;
    12. int *const p = &a;
    13. cout << p << endl;
    14. system("pause");
    15. return 0;
    16. }
    指针常量,即指针是一个常量。那么它对应地址就不能修改,所以引用的指向就无法修改。
    但是可以修改这个地址里面存储的数据的值。

     

     综上:

    1. 数据类型:

    • 引用: 引用是一个别名,它引用了另一个变量或对象。引用必须始终与其引用的对象具有相同的数据类型。在C++中,引用通常通过 & 操作符声明,如 int &ref = original;

    • 指针: 指针是一个包含内存地址的变量。指针可以指向任何数据类型,包括其他指针。在C/C++中,指针通过 * 操作符声明,如 int *ptr = &value;

    2. 内存操作:

    • 引用: 引用在编译时被解析为其引用的对象的地址。在使用引用时,你不需要关心地址操作,因为它们是隐式的。

    • 指针: 指针需要显式地使用地址操作符 & 和解引用操作符 * 来访问或修改数据。这意味着你可以更灵活地操作内存,但也需要更多的谨慎,以防止悬挂指针等问题。

    3. 安全性:

    • 引用: 由于引用在创建后不能更改其引用的对象,因此引用相对较安全,不容易出现空引用错误。

    • 指针: 指针可以在运行时重新分配到不同的内存地址,这可能导致悬挂指针、野指针等问题,因此需要更小心地处理指针,以确保内存安全。

    4. 语法:

    • 引用: 引用的语法通常更简洁,不需要使用 * 运算符来访问数据。

    • 指针: 指针的语法相对更复杂,需要使用 * 运算符来解引用指针

  • 相关阅读:
    Linux系统下实现开机自动加载驱动模块
    利用MQ实现mysql与elasticsearch数据同步
    python问题:vscode切换环境,pip安装库网络错误
    关键字详解
    Docker部署jenkins容器时,允许jenkins容器内部控制宿主机上的docker
    Spring webflux 构建响应式 RESTful Web 服务
    [C++] 小游戏 斗破苍穹 2.2.1至2.11.5所有版本(中) zty出品
    基于随机森林、svm、CNN机器学习的风控欺诈识别模型
    Python Web:Django、Flask和FastAPI框架对比
    k8s-11 网络策略
  • 原文地址:https://blog.csdn.net/cat_fish_rain/article/details/133459341