美文网首页
Const关键字理解(iOS)

Const关键字理解(iOS)

作者: 学而不思则罔思而不学则殆 | 来源:发表于2016-11-24 09:20 被阅读459次
    基本数据类型
    • const 在基本数据类型中的用法
    - (void)baseConst {
        // 这两种情况,是一样的.
        // 只读常量
        int const a = 10;
        const int b = 20;
    }
    
    指针类型
    • 指针 的简单用法
    - (void)pointer {
        // int类型的变量(整形变量)
        int a = 20;
        // 指针变量:指向int类型的变量的地址,作用是存储地址
        int* p = &a;
        *p = 30;
        NSLog(@"%d", a);
    }
    
    • const 与 指针 的结合使用
    - (void)pointerAndConstSuper {
        int a = 10;
        int b = 20;
        // 这两种情况是一样的,修饰的是具体的值(*p与*p1不可修改,但是p与p1可以修改)
        int const * p = &a;
        const int* p1 = &a;
        NSLog(@"%d, %d", *p, *p1);
        // 可以修改地址
        p = &b;
        p1 = &b;
        NSLog(@"%d, %d", *p, *p1);
        b = 300;
        NSLog(@"%d, %d", *p, *p1);
        // 下面就错了
    //    *p = a;
    //    *p1 = a;
    }
    
    • 注意下面的用法:
    - (void)superPointerAndConstSuper {
        int a = 20;
        int b = 30;
        const int * const p = &a;
    //    p = &b; // 错的
    //    *p = b; // 也是错的.
    }
    
    宏与常量的异同

    宏是替换,没有变量的概念.用到就会有多余的内存.编译之前,就有了.
    常量是全局的,内存只有一份.

    使用场景

    • 方法参数中使用
    void pointer (const int* p) {
        // 自己想想看吧
    }
    
    • 静态常量
    static NSString* const CoderHG = @"CoderHG";
    
    • 全局常量
    // HGConst.h文件
    extern NSString * const HGID;
    
    // HGConst.m文件
    NSString * const HGID = @"http://www.520CoderHG.com";
    

    建议
    在开发中,不要用宏定义来定义常量.

    原文链接

    相关文章

      网友评论

          本文标题:Const关键字理解(iOS)

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