const,static,extern,#define
一、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的更多相关文章
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- 李洪强iOS经典面试题155 - const,static,extern详解(面试必备)
李洪强iOS经典面试题155 - const,static,extern详解(面试必备) 一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽 ...
- iOS 中 const static extern 关键字总结
在看一些高手所写的代码时,总是可以看到我们小白平常不用的关键字,一次,两次,三次,不能总是不明不白,现在总结一下日常开发中常用的关键字的作用: 关键字const/static/extern的释义和用法 ...
- const,static,extern简介
一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 编译时刻:宏是预编译(编译之前处理),const是编译阶段. 编 ...
- const,static,extern简介(重要)
一.const与宏的区别(面试题): const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 编译时刻:宏是预编译(编译之前处理),const是编译 ...
- iOS正确使用const,static,extern
static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁) 修饰全局变量 全局变 ...
- const ;static;extern的使用与作用
const /** const :常量 const ...
- const static extern
http://wenku.baidu.com/link?url=saMJ3WpR_Lili2oflaIK-xK7wkQhtP2I-FdEX6I_XjmNxl7m0Z8SYHJtfqyXYkSmok8h ...
- const&static&extern
const 结论: 如果const写在指针变量名的旁边, 那么指针的指向不能变, 而指向的内存空间的值可以变 如果const写在数据类型的左边或者右边, 那么指针的指向可以改变, 但是指向的内存空间的 ...
随机推荐
- gitlab之source tree使用方法
一.简介 1.source tree 是什么 可视化项目版本控制软件,使用git项目管理,支持windows/mac 客户端使用source tree开发源码,图形化提交到gitlab 二.使用sou ...
- Python-9-赋值进阶
1.序列解包 同时给多个变量赋值 >>> x, y, z = 1, 2, 3 >>> print(x, y, z) 1 2 3 用这种方式还可以交换两个变量的值 ...
- Js 实现全屏
<input id="Button1" type="button" value="开始全屏" onclick="kaishi ...
- easyui---accordion(手风琴)
首先配置好easyui环境 1.ACCORDION(手风琴) class:class=easyui-accordion, 事件: 查找: function selectPanel(){ //会弹出输入 ...
- hdu6062RXD and logic gates多校题 构造
听说标算的点数是2^(n+1)级别的,也不知道我是不是比标算优一点? (话说这种题一眼看过去怎么跟题答一样) 然而并不是题答,没法手玩,来考虑一下一般解法: 考虑一个规模较小的问题:最后一位一定是0 ...
- atcoder square869120Contest#3 F 寿司
省选round1的时候dalao的推荐——atcoder的题目码量不大,但很巧妙,题目比较难找,挂个链冷静一下:http://s8pc-3.contest.atcoder.jp/tasks/s8pc_ ...
- CSS标签大全
CSS常用标签 字体属性:(font) 大小:font-size: x-large;(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX.PD 样式 :font-styl ...
- Sticky Footer的实现
Sticky Footer即绝对底部,是一种常用的布局方式,页脚在内容区未超出窗口高度时一直保持在最底部显示,而超过窗口高度时则保持在内容区最底部. 有两种实现方法: 第一种:经典的实现方式 html ...
- X Samara Regional Intercollegiate Programming Contest DIV2
http://codeforces.com/gym/101341 其实我觉得这份题很不错的,虽然是div2,但是感觉对我挺有帮助(我比较垃圾0.0),还没补完(做的时候一直蒙逼,要补很多题)先写一点点 ...
- Eclipse Debug时出现Source not found错误
今天在Debug Java代码时报出了Source not found这个错误,如下图所示,经过查询资料得知这是由于缺少Hadoop源程序代码所导致的错误. 在此我建议了两种方法,可以先采用方法一,这 ...