• deine const 等关键字区别


    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

  • 相关阅读:
    vmware centos 共赏目录不显示
    小程序上拉刷新
    chrome json接口数据 插件
    滚动条滚动事件
    smarty循环item命名规范
    css实现梯形样式(含有border)
    设置行高并不能垂直居中
    图片翻转交互效果
    smarty文章字符截取
    css动画 transition
  • 原文地址:https://www.cnblogs.com/air-liyan/p/6489833.html
Copyright © 2020-2023  润新知