存储类关键字

         auto :修饰局部变量,分配在栈上(既然在栈上,说明它如果不初始化那么值就是随机的),

平时定义局部变量时就是定义的auto,只是省略了auto关键字而已。

          static :可修饰局部变量也可修饰全局变量。如果局部变量用static修饰时为静态局部变量,

它只能在函数内部使用但是一直占据存储空间的变量。(静态局部变量占用内存时间长可读性差,

因此,除非必要,尽量避免使用局部变量。当多次调用一个函数且要求在调用之间保存某些变量的

值时可考虑采用静态局部变量。)

如果全局变量用static修饰时为静态全局变量,全局变量本身就是静态存储方式,静态全局变量也是静态

存储方式,这俩这在存储方式上并无区别。

全局变量与全局静态变量的区别:  
(a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。  
(b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量

的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。  
(c)具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用

例:




非静态全局变量对整个源程序都有效,所以在做静态库开发时用到全局变量都要用static修饰成静态的,

避免接入静态库的程序中全局变量与静态库中的全局变量冲突。

那么一个.m文件要使用另一个.m文件中的全局变量该怎么处理?很简单,使用extern关键字修饰。

           extern

APPdelegate.m中定义的全局变量ZXYToken想在ViewController中使用


可以打印出字符串:zhouxiangyu

如果在APPdelegate.m中定义的是static静态的全局变量,那么在ViewController中这么写就

会报错。

(extern 的工作原理:先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找。)


const:   http://mp.blog.csdn.net/postedit/79034651

   const 与 static 联合使用


    const和static替代宏与宏的区别:


        register

这个 关键字请求编译器尽可能地将变量存储在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。注意 是尽可能,不是绝对。
注意: 1、 register变量必须是能被CPU寄存器接受的类型,这意味着  register  变量必须是一个单个的值,并且其长度应小于或等于整型的长度。不能用取址符"&"来获取  register变量的地址


volatile:


typedef:

typedef是C中的关键字,它的主要作用是给一个数据类型定义一个新的名字,一般用于简化较为复杂的类型声明。

例:


在结构体和block定义中比较常用到:

  

俩种写法是等效的。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值