const

const修饰位置不同,代表什么?
1.const NSString *HSCoder = @"汉斯哈哈哈";
2.NSString const *HSCoder = @"汉斯哈哈哈";
3.NSString * const HSCoder = @"汉斯哈哈哈";
1.const NSString *HSCoder = @"汉斯哈哈哈";
"*HSCoder"不能被修改, "HSCoder"能被修改

2.NSString const *HSCoder = @"汉斯哈哈哈";
"*HSCoder"不能被修改, "HSCoder"能被修改

3.NSString * const HSCoder = @"汉斯哈哈哈";
"HSCoder"不能被修改,"*HSCoder"能被修改

注意:12其实没什么区别
常量区分

全局常量:不管你定义在任何文件夹,外部都能访问

NSString *const HSCoder = @"全局常量";

局部常量:用static修饰后,不能提供外界访问

static NSString *const HSCoder = @"当前文件的全局常量";
  • const与宏的区别
  • 编译时刻 const 是编译阶段,宏是预编译.
  • 编译检查 const会编译检查,会报编译错误.宏不做检查,不会报编译错误,只做替换.
  • 宏的好处 宏能定义一些函数,方法,const不能.
  • 宏的坏处 使用大量额度宏,容易造成编译的时间久,每次都需要重新替换.

static

  • static的作用:

    • 修饰局部变量:

      1. 延长局部变量的生命周期,程序结束才会销毁。
      2. 局部变量只会生成一份内存,只会初始化一次
      3. 改变局部变量的作用域。
    • 修饰全局变量:

      1. 只能在本文件中访问,修改全局变量的作用域,生命周期不会改
      2. 避免重复定义全局变量.

extern

  • extern的作用: 只是用来获取全局变量(包括全局静态变量)的值,不能用于定义变量.
  • extern的原理: 先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找。
联合使用
  • staticconst:声明一个静态的全局只读变量,(仅当前文件可访问且只读).
static  NSString * const key = @"name";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值