• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Objective-C中的const,extern,static

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一.const

1>对于const,记住关键的一点,它只是修饰右边的变量.

例如:

- (void)viewDidLoad {
    [super viewDidLoad];   
    // const两种用法
    // const:修饰基本变量p
    // 这两种写法是一样的,const只修饰右边的基本变量b
    const int b = 20; // b:只读变量
    int const b = 20; // b:只读变量
// const修饰指针变量访问的内存空间,修饰的是右边*p1, // 两种方式一样 const int *p1; // *p1:常量 p1:变量 int const *p1; // *p1:常量 p1:变量
// const修饰指针变量p1 int * const p1; // *p1:变量 p1:常量
// 第一个const修饰*p1 第二个const修饰 p1 // 两种方式一样 const int * const p1; // *p1:常量 p1:常量 int const * const p1; // *p1:常量 p1:常量 }

2>对于const的应用场景

//如果我需要一个方法,参数是地址,只能通过地址获取值,不能修改地址

//*a 只读  不能修改*a
- (void)test:(const int *)a{
    a = 20;
}

//如果不能修改a的值,只能修改a访问的值
//a 只读  不能修改a
- (void)test1:(int * const)a{
    *a = 20;
}

3>const和宏的区别

  (1)宏是预编译执行,const是编译执行.

  (2)宏不会做编译检查,它只是做替换,因此不会编译报错;const会编译检查,会编译报错.

  (3)宏能定义方法或函数,const不能.

  (4)大量使用宏会造成编译时间长久.

  (5)注意:大量使用宏并不会消耗很多内存,宏定义的是常量,常量是存放在常量去,只生成一份内存,并不像有些人所说的会消耗很多内存!

二.static和extern

1>static作用:

   (1)修饰局部变量

      1)延长局部变量的声明周期,程序结束才销毁

      2)局部变量只初始化一次,节省内存

      3)改变作用域

     (2)修饰全局变量

      1)只能在本文件中访问,修改全局变量作用域,生命周期不改变

      2)避免重复定义全局变量

2>extern作用:

    (1)只是用来获取全局变量的值,不能用来定义变量

    (2)工作原理是先在本文件中查找有没有全局变量,没有找到的话再去其他文件中查找.

三.static和const一起使用

1>防止重复声明全局变量

2>不希望同事无意中修改变量,只允许读取

3>声明一个静态的全局只读常量

四.extern与const一起使用

1>在多个文件中经常使用同一个字符串常量,用extern和const组合使用

2>一般建一个GlobeConst


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift和Objective-C混编注意发布时间:2022-07-12
下一篇:
第一个objective-c程序发布时间:2022-07-12
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap