一、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. git配置命令

    一.Git安装及密钥的生成 1.下载Git软件:http://msysgit.github.io/ 2.桌面右键 Git Bash Here 打开git命令行: 3.ssh-keygen -t rsa ...

  2. 阿里云ECS测试服务器部署

    前序:为了提供一个干净的测试环境,更好地验证产品问题,也为了防止被开发人员频繁发布代码而打断测试工作,故测试团队搭建了一台阿里云ECS服务器,以下是具体的部署信息: 1. 安装JDK Java版本:J ...

  3. 登录案例version1 基本登录+验证码

    package com.frxx.web.servlet; import com.frxx.domain.User; import com.frxx.service.impl.UserServiceI ...

  4. How far away(DFS+vector存图)

    There are n houses in the village and some bidirectional roads connecting them. Every day peole alwa ...

  5. 从wireshake分析http和https的通信过程

    参考文章: Wireshark基本介绍和学习TCP三次握手 [技术流]Wireshark对HTTPS数据的解密 Wireshark/HTTPS Journey to HTTP/2 以TCP/IP协议为 ...

  6. .net core实现的全程序跟踪

    Ocelot中使用Butterfly实践 ocelot   Ocelot + Consul实践   Ocelot中使用Butterfly实践   Ocelot监控     Ocelot统一权限验证   ...

  7. 部署ASP.NET Core应用程序在CentOS 7

    CentOS 7部署ASP.NET Core应用程序 看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡 ...

  8. mysql 无法启动 unkown command

    1. https://serverfault.com/questions/490656/mysql-not-starting-error-usr-sbin-mysqld-unknown-option- ...

  9. 038 Count and Say 数数并说

    数数并说序列是一个整数序列,第二项起每一项的值为对前一项的计数,其前五项如下:1.     12.     113.     214.     12115.     1112211 被读作 " ...

  10. 无线网路由器的dBm值

    首先,我们需要知道的是无线信号 dbm都是负数,最大是0:dbm值只在一种情况下为0,那就是在理想状态下经过实验测量的结果,一般我们认为 dbm为0是其最大值,意味着接收方把发射方发射的所有无线信号都 ...