C/C++ static、extern】的更多相关文章

转自:http://www.jianshu.com/p/2fd58ed2cf55 前言 本篇文章主要介绍在开发中怎么使用const.static.extern关键字. 一.const 与宏的区别: const 简介:我们在开发中经常为了省事,把一些常量抽成宏.但是苹果不推荐我们使用宏,推荐我们使用const常量,所有的系统通知都是用的const常量. 编译时刻:宏是预编译(在编译前处理),const 是编译阶段. 编译检查:宏不做检查,不会报编译错误,只是做替换,用宏定义的函数会报参数类型错误:…
一.const与宏的区别 const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编译(编译之前处理)const是编译阶段. 编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误. 宏的好处:宏能定义一些函数,方法.const不能 宏的坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换 注意:很多Blog都说使用宏,会消耗很多内存,我这验证并不会生成很多内存,宏定义的是常量,常量都放在常量区,…
参考文章:http://www.cocoachina.com/ios/20161110/18035.html 1.const 这个单词翻译成中文是“常量”的意思.在程序中我们知道“常量”的值是不能变的,固定的.所以const关键字的作用就呼之欲出了: (1) const用来修饰右边的基本变量或指针变量(2) 被修饰的变量只读,不能被修改 下面举个最简单的例子: //声明一个int类型的变量a,变量初始化值为10,并且变量a左边有一个const关键字修饰 int  const  a = 10; /…
一.static本质作用 与static相对的关键字是auto,两者是一对.我们一般声明变量,如:int a,其实都是auto int a,只是auto省略了而已,但是static不能省略.要理解static,最好先理解auto.auto的含义是由程序自动控制变量的生存周期,通常是变量在进入其作用域的时候被分配,离开其作用域的时候被释放:而static则不同,变量在程序初始化时被分配,直到程序退出前才被释放:也就是static是按照程序的生命周期来分配释放变量的,而不是按照变量自己的生命周期.…
引用请注明出处:http://blog.csdn.net/int64ago/article/details/7396325 对于写了很多小程序的人,可能static和extern都用的很少,因为static和extern通常在工程量很大时候才能体现优势很必要性,这就不奇怪linux内核代码中"泛滥"着这两个关键词,而且据我所知,这也是面试经常被问道的,因为这涉及到的底层多一点.下面,就我自己总结的几点简要谈谈: 一.c语言内存空间布局 下面是google上找的一张c内存布局图,我先基于…
一.volatile详解 volatile的本意是"易变的" 因为访问寄存器要比访问内存单元快的多,所以编译器一般都会作减少存取内存的优化,但有可能会读脏数据.当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据.精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问:如果不使用valatile,则编译器将对所声明的语句进行优化.(简洁的说就是:volatile关键…
一.预备知识 1. 什么是局部变量?什么是全局变量?          所谓局部变量,就是指在函数内部定义的变量的,只在该函数范围内有效. 全局变量是指,在函数外部定义的变量为外部变量,即全局变量.它的有效范围是从定义变量的位置开始,到此源文件(如.c文件)结束的位置.这个变量在同一个工程中的其他源文件是没有起作用的. 2.变量的存储方式 从上面的分类中可以看出,从变量的作用域角度可以分为 局部变量和全局变量.其实,从变量的存在的时长来看,可以分为静态存储方式和动态存储方式. 那么,什么是静态存…
默认情况下,C语言的全局变量是全世界都可以访问的,也就是全局变量可以跨文件访问. extern可以引用全局变量 例如,如果有一个全局变量int money = 100;extern int money 意为:引用这个全局变量,而非定义一个全局变量 注意:不允许出现两个变量名一样的全局变量 函数和变量一样,都可以被全局引用 static的作用:static 修饰的全局变量作用域仅限于当前文件 所以被static修饰的全局变量不能被引用static修饰的局部变量只会初始化一次,在整个程序运行过程中始…
static:   1.在函数内部,表示该变量的值在各个调用间一直保持延续性:     2.在函数这一级,表示该函数只对本文件可见. extern: 1.用于函数定义,表示全局可见(属于冗余的):   2.用于变量,表示它在其他地方定义. void:    1.作为函数的返回类型,表示不返回任何值: 2.在指针声明中,表示通用指针的类型: 3.位于参数列表中,表示没有参数.…
static static用于定义静态变量,静态变量只会被初始化一次,并且直到程序销毁时才会释放 static NSString *str = @"asdfa"; const const用于定义常量 NSString* const URL = @"www.baidu.com"; extern(外部变量) extern表明定义的变量是外部变量 .h文件 extern NSString * const king; .m文件 NSString * const king =…