const理解

关于const ** const的理解,可以参考[C C++ OC指针常量和常量指针区别]这篇文章。

该篇文章中提到一个诀窍:** (指针) const(常量) 谁在前先读谁,谁在前谁不允许改变。*
我个人的记忆方法是:const修饰谁,谁就不可变。

    int a = 10;
    int b = 20;
    
    int * const constValue = &a;
    const int * constPValue = &b;
    
    NSLog(@"constValue = %d, constPValue = %d", *constValue, *constPValue);
    
    //constValue = &b; //报错,constValue是不可变的
    *constValue = 15;
    
    //*constPValue = 25; //报错,*constPValue是不可变的
    constPValue = &a;
    
    NSLog(@"constValue = %d, constPValue = %d", *constValue, *constPValue);

打印结果为:

constValue = 10, constPValue = 20
constValue = 15, constPValue = 15
  • 代码int * const constValueconst修饰constValue,所以constValue是不可变的,在初始化后对它赋值就会报错。

const在此处的影响: constValue不能再指向其他内存,但是constValue当前指向的内存中的值可以改变

  • 代码const int * constPValueconst修饰的是*constPValue,所以*constPValue是不可变的。

const在此处的影响:constPValue当前指向的内存中的值不可以被改变(特指通过constPValue改变),但是可以指向其他内存。


const int a;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,802评论 1 32
  • (1)可以定义 const 常量 (2)const 可以修饰函数的参数、返回值. 详细内容: 1、什么是const...
    幽鬼09阅读 3,940评论 0 4
  • 来说下c/c++中的const的用法。在英语中常数的一种表达是“中的const的”,在编程中可能是借用了这个单词(...
    Jack_Cui阅读 9,182评论 0 3
  • 只要实战不说废话 变量 因为 Lua 的寄存器很多,预编译时便能将所有的局部变量存到寄存器中。所以,在 Lua 中...
    IvanRunning阅读 3,655评论 0 1
  • 爬取商品信息
    kaurala阅读 916评论 0 0