美文网首页iOS开发
OC-const、static、#define使用

OC-const、static、#define使用

作者: inyourface | 来源:发表于2019-10-10 11:07 被阅读0次

    一、const

        const修饰符可以修饰指针类型、基本数据类型、设置常量  ,编译检查,比宏更加安全  

        1.const修饰指针类型

            (1)const在 * 的右边: 

                int *const p = &d; 

                p = 10;

                *p = &b;//错误

                指针指向的地址无法改变,但是可以通过指针改变指向地址里保存的值。

            (2)const在 *  的左边

                int const *p = &d;

                p = 10;//错误

                *p = &b;

                指针指向的地址可以改变,但是无法通过指针改变指向地址里保存的值。

          2.const修饰基本数据类型

                (1)使用const可以把基本数据类型变为常量,无法进行修改

                    int const a = 1;

                    const int b = 2;

                    a = 2;//错误

                    b = 3;//错误

            3.const设置常量

                    (1)静态常量

                        static NSString * const str = @"str";   

                        str = @"strstr"//报错,值不可改变

                        static const NSString *str = @"str";

                        str = @"strstr";//值可以改变,地址不能改变

                    (2)全局常量

                         .h文件中   extern NSString * const string;

                        .m文件中   NSString * const string = @"string";


    二、static

       1.作用

        (1)函数体内 static 变量的作用范围为该函数体,其内存只被分配一次并存储到全局变量区,因此其值在下次调用时不会改变; 

        (2)在类内声明的 static 全局变量可以被该类所用函数访问,但不能被外部函数访问; 

        (3)在类中的 static 成员变量属于整个类所拥有;

        (4)在类中的 static 成员函数属于整个类所拥有,只能访问类的static 成员变量。  

       2.修饰局部变量:

        1.修饰局部变量,使局部变量的生命周期延长到程序结束才会销毁。

        2.被修饰的局部变量只会生成一份内存,只会初始化一次。

        3.修饰全局变量

        1.修饰全局变量只能在本文件中访问,避免重复定义全局变量

        4.注意

          静态方法只能调用静态方法和静态变量


    三、#define宏定义

        #define作用在预编译时期,其作用就是代码替换,不做任何类型检查。

        #define 宏名 主体;

        #define  PI  3.1415926

    相关文章

      网友评论

        本文标题:OC-const、static、#define使用

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