首页 > 其他 > 详细

deine const 等关键字区别

时间:2017-03-02 12:42:41      阅读:205      评论:0      收藏:0      [点我收藏+]

define
  属于预编译指令,在程序运行之前就已经编译好;额,定义变量,没有类型信息,

const
  修饰的变量是不可变的,只是给出了内存地址,且只在程序运行时初始化开辟一块内存空间
  const 只修饰右边部分 右边部分表示只读

 

    int const *p; // *p:指针变量
    //可以修改值,但不能修改地址
    int a = 10;
    int b = 20;
    int const *p = &a;
    NSLog(@"a = %d,b = %d,*p = %d a地址:%p", a, b, *p,a);
    p = &b; 
    NSLog(@"a = %d,b = %d,*p = %d a地址:%p", a, b, *p,a);


    // const修饰变量
    int * const p; // p:常量
    //只能修改p的地址 不能修改p 的值
    int const *p = &a;
    NSLog(@"a = %d,b = %d,*p = %d a地址:%p", a, b, *p,a);
    *p = b; 
    NSLog(@"a = %d,b = %d,*p = %d a地址:%p", a, b, *p,a);

 



extern
  extern用来修饰全局变量。extern用在变量声明中常常有这样一个作用
  使用如:
  .h 文件中声明
    extern NSString * const kTTTStrikeOutAttributeName;
  .m 文件中
    NSString * const kTTTStrikeOutAttributeName = @"TTTStrikeOutAttribute";

FOUNDATION_EXPORT:
  FOUNDATION_EXPORT double TTTAttributedLabelVersionNumber;

  类似define,区别在于这种方法在检测字符串的值是否相等的时候更快.对于第一种你可以直接使用(stringInstance == MyFirstConstant)来比较,而define则使用的是这种.([stringInstance isEqualToString:MyFirstConstant])

 

参考链接:http://www.jianshu.com/p/f547eb0368c4

deine const 等关键字区别

原文:http://www.cnblogs.com/air-liyan/p/6489833.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!