• c++ const 用法总结


    最近第二次学习c++ , 却总是忘记const的一些用法, 所以记录一下笔记

    忒困!

    A: const指针位于 * 的左边

    A : const 修饰指针指向的内容, 则内容为不可变量但指针可变;

      称其为左定向, const 位于 * 的左边

        int i = 10;
        int j = 20;
        const int *p = &i;
        printf("%d
    ", *p);
        
        p = &j; // it's ok
        
        *p = 30; // it's error
        
        i = 39; // it's ok
        printf("%d
    ", *p);

    B: const指针位于 * 的右边

    B: const 修饰指针, 则指针为不可变量; 可以改变值, 但不能改变地址
      称其为右定向, const 位于 * 的右边

        int a = 8;
        int * const p = &a;
        
        *p = 9;
    
        int b = 7; // it's error
        p = &b; // it's error
        printf("%d
    ", *p);
        printf("%d
    ", a); // a也变成9 了

    C: const指针位于 * 的两边

    C: cosnt修饰指针和指针指向的内容, 则指针和指针指向的内容都为不可变量;
      左定值, 右定向, const修饰不变量

        int a = 8;
        const int * const p = &a;
        
        printf("%d
    ", *p);

    D:(int*)a和int*a的区别

    不一样。(int*)a将指针变量a强制转换为整型指针,说明a一般不是一个整型指针,也可以是个整型指针。int*a,定义一个整型指针变量a






    E: 阿里面试题

    阿里C++笔试题:const int a = 10;int * p = (int *)(&a);*p=20; 为什么结果是a=10,*p=20?

    编译器优化的结果,编译器在处理 const int a = 10; 
    这句时 没有为a分配内存赋值,而是在加入了符号表,后续引用a时有些类似#define a 10这样处理了
    int * p = (int *)(&a);这句则 配*p被强制赋值,所以指针有效指向了某个地址,所以出现了上述结果

     F: const在成员函数后边

     由于电脑崩溃了, 所以那个网页的内容找不到了, 没记载, 以后补上

    但总体想表达的意思呢, 就是, 成员函数后边跟上const以后, 里面不能有修改的内容

      

    参考链接: https://www.cnblogs.com/Forever-Kenlen-Ja/p/3776991.html

  • 相关阅读:
    Fiddler 教程
    ios iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
    ios 生成一个动态的随机的头像/随机数的操作
    在工程中如何使用一个公用的页面
    使用手势,让键盘在点击空白处消失
    ios开发之--iOS 11适配:iOS11导航栏返回偏移
    svn 操作字母的提示
    字面量
    控制 打开和关闭远程推送通知
    常见结构体 日期 字符串的操作 很实用
  • 原文地址:https://www.cnblogs.com/renfanzi/p/9233194.html
Copyright © 2020-2023  润新知