ios static ,const,extern 使用

最新项目上线,抽空写下博客,记录一些基础知识

1.const和宏 区别

    const:常量

    const:当有字符串常量的时候,苹果推荐我们使用const

    const与宏的区别

    1.编译时刻: 宏:预编译 const:编译时刻

    2.编译检查: 宏:不会检查错误 const:会检查错误

    3.宏的好处:可以定义代码

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

    注意:经常使用宏会造成内存不段增加,每次使用宏,都会分配一个内存

   // 全局变量(const)

    NSString *const XMGAccountKey = @"account";

   // #:预编译(宏)

     #define XMGUserDefaults [NSUserDefaults standardUserDefaults]

 2.const 修饰类型

     1.仅仅是用来修饰右边的变量(只能修饰变量:基本变量,指针变量,对象变量)

     2.const修饰的变量,表示只读

     const书写规范:一定要放在变量的左边

3.const使用地方

     // const放*前面约束参数,表示*a只读

    // 只能修改地址a,不能通过a修改访问的内存空间

    - (void)test:(const int * )a{

         // *a = 20;

     }

     // const放*后面约束参数,表示a只读

     // 不能修改a的地址,只能修改a访问的值

     - (void)test1:(int * const)a{  

          int b;  

          // 会报错  

          a = &b;  

          *a = 2;

      }

     - (void)viewDidLoad {  

         [super viewDidLoad];  

         // Do any additional setup after loading the view, typically from a nib.  

         int a = 10;  

         // 需求1:提供一个方法,这个方法的参数是地址,里面只能通过地址读取值,不能通过地址修改值。  

         // 这时候就需要使用const,约束方法的参数只读.  

         [self test:&a];  

         // 需求2:提供一个方法,这个方法的参数是地址,里面不能修改参数的地址。  

         [self test1:&a];

      }

4.static和extern 作用

 static作用:

    1.修饰局部变量

        * 延长这个局部变量的生命周期,只要程序运行,局部变量就会一直存在

        * 局部变量只会分配一次内存,为什么?用static修饰的代码,只会在程序一启动就会执行,以后就不会在执行

 

    2.修饰全局变量

        * 只会修改全局变量的作用域,表示只能是当前文件内使用

 

    extern作用:

    1.声明一个变量,不能定义变量

 

    注意:extern修饰的变量不能初始化

 

    使用场景,一般用于声明全局变量


   extern工作原理:

           先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找。


    // 全局变量:只有一份内存,所有文件共享,与extern联合使用。

int a = 20;

// static修饰全局变量

static int age = 20;

- (void)test{  

// static修饰局部变量  

static int age = 0; age++;  

NSLog(@"%d",age);

}


- (void)viewDidLoad {  

[super viewDidLoad];  

// Do any additional setup after loading the view, typically from a nib.  

[self test];  

[self test];  

extern int age;  

NSLog(@"%d",age);

}


  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值