zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    BZOJ1800 fly 飞行棋 [几何]
    Cf #434 Div.1 D Wizard's Tour [构造题]
    Last mile of the way [树形dp+重链剖分]
    World Of Our Own [Lucas+思维题]
    vue 初级小总结
    转-redux-saga
    【转】react-native开发混合App-github开源项目
    react中路由的跳转
    Lodash 浓缩
    jq的attr、prop和data区别
  • 原文地址:https://www.cnblogs.com/air-liyan/p/6489833.html
Copyright © 2011-2022 走看看