C关键字r
下面关于C的几个关键字是经常和我们打交道的而我们又经常对这些含糊不清的本文根r
据自己的学习体会作以总结以期达到真正理解和活用的目的r
staticr
l静态变量作用范围在一个文件内程序开始时分配空间结束时释放空间默认初始r
化为0使用时可改变其值r
l静态变量或静态函数即只有本文件内的代码才可访问它它的名字变量名或函数r
名在其它文件中不可见r
l在函数体内生成的静态变量它的值也只能维持r
i
tmax_so_fari
tcurr求至今本次调用为止最大值r
r
statici
tbiggest该变量保持着每次调用时的最新值它的有效期等于整个程序的有效期r
ifcurrbiggestr
biggestcurrr
retur
biggestr
r
l在C类的成员变量被声明为static称为静态成员变量意味着它为该类的所有实r
例所共享也就是说当某个类的实例修改了该静态成员变量其修改值为该类的其它所r
有实例所见而类的静态成员函数也只能访问静态成员变量或函数r
l类的静态成员变量必须在声明它的文件范围内进行初始化才能使用private类型的也不r
例外如r
floatSavi
gsAccou
tcurre
tRate000154r
注curre
tRate是类Savi
gsAccou
t的静态成员变量r
registerr
l用register声明的变量称着寄存器变量在可能的情况下会直接存放在机器的寄存器r
中但对32位编译器不起作用当globaloptimizatio
s全局优化开的时候它会做r
出选择是否放在自己的寄存器中不过其它与register关键字有关的其它符号都对32r
位编译器有效r
autor
l它是存储类型标识符表明变量自动具有本地范围块范围的变量声明如forr
循环体内的变量声明默认为auto存储类型r
exter
r
l声明变量或函数为外部链接即该变量或函数名在其它文件中可见被其修饰的变量r
外部变量是静态分配空间的即程序开始时分配结束时释放用其声明的变量或r
函数应该在别的文件或同一文件的其它地方定义实现在文件内声明一个变量或函r
数默认为可被外部使用r
l在C中还可用来指定使用另一语言进行链接这时需要与特定的转换符一起使用r
目前MicrosoftCC仅支持”C”转换标记来支持C编译器链接使用这种情况有两种r
形式r
uexter
“C”声明语句r
uexter
“C”声明语句块r
volatiler
l限定一个对象可被外部进程操作系统硬件或并发线程等改变声明时的语法如r
下r
i
tvolatile
Vi
tr
这样的声明是不能达到最高效的因为它们的值随时会改变系统在需要时会经常读写这个r
对象的值只常用于像中断处理程序之类的异步进程进行内存单元访问r
co
str
lco
st所修饰的对象或变量不能被改变修饰函数时该函数不能改变在该函数外面声r
明的变量也不能调用任何非co
st函数在r