一、const

     // 简单定义变量,可以修改变量的值
int a = ;
a = ; // const的用法
// 用法一:
const int b = ;
int const c = ; // 不允许修改,因为 const 修饰 b/c,指定 b/c 为常量!!
// b = 10;
// c = 20; // 用法二
// const 修饰指针变量访问的内存空间,修饰的是右边的 指针!!
const int *p1;
int const *p2; // p1/p2 可以修改,*p1/*p2 不可以修改!!
p1 = &a;
printf("%d\n", *p1); // 打印结果 *p1 为 20。指针指向了变量 a 内存地址

二、static

1.最重要的作用是隐藏——(修饰全局变量,只能在本文件中访问,修改全局变量的作用域,生命周期不会改)

2.保持数据持久——修饰的变量保存在全局区(静态区),初始化的全局变量和静态变量只在程序开始运行完成唯一一次初始化,程序结束由系统释放内存。

3.默认初始化为0(全局变量也具备)(全局区内存中所有字节默认都为 0x00);

 

三、extern

用来获取全局变量,extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。

四、const和#define

const:翻阅苹果API,发现苹果使用定义大量字符串常量!关于字符串常量的定义,苹果推荐我么你使用const,而非宏定义。(关于宏定义,可以查看我的博客 宏定义)

宏是编译之前对程序中使用宏的地方简单替换,不会出现报编译错误;const是编制时刻,会作类型检查!使用大量宏,容易造成编译时间久,每次都需要重新替换。另外,宏定义的是常量,常量会放在常量区!

五、static与const的组合

作用:声明一个只读的静态常量。通常用来定义定义一个文件中常用的字符串常量。(例如cell重用标示符)

六、extern和const的组合

场景:多个文件都会用到同一个字符串常量。可以使用该组合为我们带来方便,达到多个文件共享一份全局变量。

例如OC中:

 extern NSString * const MyClass;

尊重作者劳动成果,转载请注明: 【kingdev】

const,static,extern,#define的更多相关文章

  1. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  2. 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)

    李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...

  3. iOS 中 const static extern 关键字总结

    在看一些高手所写的代码时,总是可以看到我们小白平常不用的关键字,一次,两次,三次,不能总是不明不白,现在总结一下日常开发中常用的关键字的作用: 关键字const/static/extern的释义和用法 ...

  4. const,static,extern简介

    一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 编译时刻:宏是预编译(编译之前处理),const是编译阶段. 编 ...

  5. const,static,extern简介(重要)

    一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 编译时刻:宏是预编译(编译之前处理),const是编译 ...

  6. iOS正确使用const,static,extern

    static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁) 修饰全局变量 全局变 ...

  7. const ;static;extern的使用与作用

     const                                                                /**      const :常量      const  ...

  8. const static extern

    http://wenku.baidu.com/link?url=saMJ3WpR_Lili2oflaIK-xK7wkQhtP2I-FdEX6I_XjmNxl7m0Z8SYHJtfqyXYkSmok8h ...

  9. const&static&extern

    const 结论: 如果const写在指针变量名的旁边, 那么指针的指向不能变, 而指向的内存空间的值可以变 如果const写在数据类型的左边或者右边, 那么指针的指向可以改变, 但是指向的内存空间的 ...

随机推荐

  1. python基本数据类型2——操作

    字符串 name = "alex" # 移除两边的空格 print(name.strip()) #strip不修改值 # 是否以"al"开头 print(nam ...

  2. Hexo瞎折腾系列(8) - 添加评论系统

    前言 Hexo的NexT主题本身就集成了一些评论系统,多说啊之类的已经关闭服务的略过不提,目前比较多人用的有畅言.来必力livere.Gitment.Gitalk.Disqus等. 我刚用的评论系统的 ...

  3. @Column 注解详情

    @Column标记表示所持久化属性所映射表中的字段,该注释的属性定义如下: @Target({METHOD, FIELD}) @Retention(RUNTIME) public @interface ...

  4. nginx超时问题

    一. 戏说不管你是做运维还是做开发,哪怕你是游客,时不时会遇到502 Bad Gateway或504 Gateway Time-out.出现这页面,把服务重启下,再实在不行重启下服务器,问题就解决了, ...

  5. docker系列(二):镜像

    1 引言 将docker与汽车生产线类比,如果说docker引擎是汽车生产车间,那么容器就是最终的产品——汽车,而本节要介绍的镜像就如同汽车设计图纸,其重要性不言而喻——只有有了设计图(镜像),才能生 ...

  6. 《springcloud 二》微服务动态网关,网关集群

    动态网关    实际上是网关和分布式配置中心的整合,通过post手动刷新,生效 动态网关 传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器.结合整合SpringCloud C ...

  7. windows黑窗口关于java程序的常用命令

    1.启动java程序 我要运行:E:\code\nhtask下的ElectricEye-0.0.1-SNAPSHOT.jar程序 #切换到程序目录cd E:\code\nhtaskE: java -j ...

  8. ASPECTJ 注解。。。

    public interface ISomeService { public void doSome(); public String dade(); } public class SomeServi ...

  9. 【翻译转载】【官方教程】Asp.Net MVC4入门指南(5):从控制器访问数据模型

    在本节中,您将创建一个新的MoviesController类,并在这个Controller类里编写代码来取得电影数据,并使用视图模板将数据展示在浏览器里. 在开始下一步前,先Build一下应用程序(生 ...

  10. 关于 hystrix 的异常 fallback method wasn't found

    典型如下: @HystrixCommand(fallbackMethod = "fallbackHi") public String getHi(String x) { Strin ...