美文网首页c语言
const和static的区别

const和static的区别

作者: imy博 | 来源:发表于2016-04-11 16:25 被阅读589次
     const与宏区别:
        1.编译时刻: 宏:预编译 const:编译
        2.编译检查:  宏不会做编译检查 const会
        3.宏好处: 宏可以定义函数和方法 const不行
        4.宏坏处: 大量使用宏,会导致预编译时间过长
    
    
     宏:在开发中会把一些常用的变量的值定义成宏
     
        但是苹果不太推荐我们使用宏,推荐我们使用const
    
    /*
        const作用:
                1.用于修饰右边变量(基本变量,指针变量)
                2.被const修饰变量只读(普通的变量是可读可写的)
     */
    
        // 面试题
        int * const p1; // p1:只读  *p1:变量
        const int *p2; // p2:变量 *p2:只读
        int const *p3; // p3:变量 *p3:只读
        int const * const p4; // p4:只读 *p4:只读
        const int * const p5; // p5:只读 *p5:只读
    
    
    /*
        开发中const使用场景
        1.const替换宏,宏:在开发中将常用字符串或者基本数据定义成宏 -> const
        2.修饰方法的参数,让方法的参数只读(即用const直接修饰方法的参数参数)
     */
    
    —————————————————————————————————————————————————————————————————————————————
    
    /*
        static作用:
                1.修饰局部变量,只要被static修饰局部变量,这个局部变量的生命周期就会延长,将局部变量从栈转移到静态区中(整个app运行过程中都在),作用域不变
                分配时刻:程序一运行的时候就会分配内存
    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
    {
        // 运行到这一行的时候 才去分配内存 √
        static int i = 0;
        
        i++;
        
        NSLog(@"%d",i);
        
    }
    
     
          /*
         static应用场景:
         当某个方法的调用频率非常高, 而该方法中更有些变量的值是固定不变的
         那么这个时候就可以使用static来修饰该变量, 让该变量只开辟一次存储空间
         这样可以提高程序的效率和性能
         */
    
                2.修饰全局变量,只要被static修饰全局变量,这个全局变量只能在当前文件下使用
     
     
        extern作用:
                    1.仅仅是用来声明外部全局变量
                    注意点:extern不能用来定义变量(注意:声明变量和定义变量的区别)
          int a;  ——>  这是声明变量a
           int a  = 0;  ——>这是定义一个变量a 
    */
    
    —————————————————————————————————————————————————————————————————————————————
    /*
        static和const联合使用
        static:修饰全局变量,全局变量只能在当前文件下使用
        const:被它修饰的变量,是只读的变量
     */
    static NSString * const isOn = @"isOn”;//isOn字符串对象是只能在当前文件下访问的只读的字符串对象(指针的指向不能改变),不能重新给isOn赋值(指针的指向发生改变)
    
    
    
    —————————————————————————————————————————————————————————————————————————————
    /*
        开发中如果使用全局变量,最容易导致冲突
     
        开发规范:只要定义全局变量,都不能在自己的类中定义,一般开发中,我们会搞一个公用文件去定义全局变量
     
     */
    
    
    
    
    

    相关文章

      网友评论

        本文标题:const和static的区别

        本文链接:https://www.haomeiwen.com/subject/beeilttx.html