美文网首页
const理解

const理解

作者: ThaiLanKing | 来源:发表于2017-03-29 23:55 被阅读22次

    关于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;
    

    相关文章

      网友评论

          本文标题:const理解

          本文链接:https://www.haomeiwen.com/subject/qiayottx.html