一、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. Picture poj1177

    Picture Time Limit: 2000MS   Memory Limit: 10000K Total Submissions: 12265   Accepted: 6484 Descript ...

  2. [Xcode 实际操作]六、媒体与动画-(1)使用图形上下文按一定比例缩放图片

    目录:[Swift]Xcode实际操作 本文将演示如何通过图形上下文,来实现图片缩放的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKi ...

  3. nodejs ejs 引擎脱离express使用

    之前用ejs都是使用express创建项目,然后在app.js中配置好的ejs直接使用即可,但是最近项目中使用的手工路由模式,脱离了express,不知道怎么用了,去扒ejs的网站,各种资料,也是懵懵 ...

  4. NetCore + Mysql + EF:No coercion operator is defined between types 'System.Int16' and 'System.Boolean',

    总结三种解决办法: 1.Mysql升级到7 2.Nuget安装Pomelo.EntityFrameworkCore.MySql 2.2.0替代MySql.Data.EntityFrameworkCor ...

  5. jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战

    背景及思路: 需求:要做 创建新卡 接口的测试,要求: 1. 不需要每次手动修改请求参数. 方案:文中先用excle将数据准备好,导出为csv格式,再用jmeter的csv请求进行参数化 2. 卡号需 ...

  6. vue中做出购物车的功能

    效果展示: 一:html结构 <div id="buyButton" class="btn-buy"> <button onclick=&qu ...

  7. Js 验证时间格式是否正确

    function RQcheck(RQ) { var date = RQ; //(-|\/)分隔符 var result = date.match(/^(\d{1,4})(-|\/)(\d{1,2}) ...

  8. linux 02 基础命令

    linux 02 基础命令 1.alias 别名 pyvip@Vip:~/demo$ alias lh="ls -lh" #将ls -lh的功能赋给lh(lh原来并没有意义)这个赋 ...

  9. Sicily 1027. MJ, Nowhere to Hide

    //就是一个简单的字符串配对~~用map来解决很easy #include <iostream> #include <map> #include <string> ...

  10. Codeforces 185B(数学结论)

    要点 有不等式\(x^ay^bz^c=a^ab^bc^c(\frac{x}{a})^a(\frac{y}{b})^b(\frac{z}{c})^c<=a^ab^bc^c(\frac{x+y+z} ...