美文网首页程序员
iOS const,static,extern

iOS const,static,extern

作者: JustEverOnce | 来源:发表于2018-02-26 14:15 被阅读0次

    const:常量,当有字符串常量的时候,推荐使用
    const与宏的区别:
    1 .编译时刻:宏:预编译 const:编译时刻
    2.编译检查:宏:不会检查错误 const:会检查错误

    NSString* const Key = @"KEN";
    #define KENUserDeafults [NSUserDefaults standardUserDefaults]
    

    3.宏的好处:定义代码
    4.宏的坏处:编译时间过长,因此常用的字符串通常使用const修饰

    const作用:

    1. 仅仅是用来修饰右边的变量(只能修饰变量:基本变量,指针变量,对象变量)
        修饰基本变量
        int const a = 5; //a:只读变量
        const int a = 5; //a:只读变量
    
        int a = 10;
        int * const p = &a;//p:只读变量  *p:变量
        const int *p = &a;//*p:只读变量  p:变量
        int const *p = &a;//*p:只读变量  p:变量
        int const * const p = &a;//*p:只读变量  p:只读变量
        const int  * const p = &a;//*p:只读变量  p:只读变量
    

    2.const修饰的变量,表示只读
    const使用场景:
    1.定义一个全局的只读的变量
    2.在方法中定义只读参数

    static作用
    1.修饰局部变量
    延长局部变量的是生命周期,只要成员运行,局部变量会一直存在
    局部变量只会分配一次内存(static:修饰的变量,程序一运行就会分配一次内存)

       for (int i=0; i<5; i++) {
           
    //        static int a = 0;
           int a = 0;
           a++;
           NSLog(@"A = %d", a);
       }
    
    2.修饰全局变量
          只会修改全局变量的作用域,表示只能是当前文件内使用
    

    extern作用
    1.声明一个变量,不能定义变量(extern修饰的变量不能初始化)
    使用场景:一般用于声明全局变量

    static、const联合使用
    static:修饰全局变量,修改作用域,表示在当前文件夹中使用
    const:修饰变量为只读

    static NSString* const showString = @"静态全局只读变量";
    

    静态全局只读变量

    const、extern联合使用
    const:修饰变量为只读
    extern:声明全局变量

    #import <Foundation/Foundation.h>
    
    //UIKIT_EXTERN = extern
    //extern NSString* c_account_edit_password;
    //extern NSString* c_accout_logout;
    //extern NSString* c_accout_logout_alert;
    //extern NSString* c_accout_logout_alert_logout;
    
    UIKIT_EXTERN NSString* c_account_edit_password;
    UIKIT_EXTERN NSString* c_accout_logout;
    UIKIT_EXTERN NSString* c_accout_logout_alert;
    UIKIT_EXTERN NSString* c_accout_logout_alert_logout;
    
    #import <Foundation/Foundation.h>
    
    NSString* const c_account_edit_password = @"修改登录密码";
    NSString* const c_accout_logout = @"退出登录";
    NSString* const c_accout_logout_alert = @"您是否要退出登录?";
    NSString* const c_accout_logout_alert_logout = @"退出";
    

    相关文章

      网友评论

        本文标题:iOS const,static,extern

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