C语言深度解剖第一章:关键字1
1定义声明Inti;定义创建了对象并为这个对象分配了内存Externinti;声明没有分配内存
2auto在缺省的时候,编译器默认所以的变量都是auto的
3register声明寄存器变量Register:这个关键字请求编译器尽可能地将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率
(cpu:皇帝,寄存器:太监,内存:大臣,不考虑CPU的高速缓存区cache)寄存器的存取速度比内存块得多
但在使用register修饰符也有些限制的:register变量必须是能被CPU寄存器所接受的类型
这就意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度,而且register变量可能不存放在内存中,所以不能用取地址运算符“&”来获取register变量的地址
4static关键字2个作用:修饰变量、修饰函数
第一个作用:修饰变量:局部变量和全局变量,存放于内存的静态区
静态全局变量:作用域仅限于变量被定义的文件中,其他文件即使使用extern声明也没法使用它;要想在定义之前使用,就必须在前面加extern***(故static声明的全局变量最好在文件顶端定义)
静态局部变量:在函数体里面定义的,就只能在这个函数里用了,同一个文档中的其它函数也用不了
由于被static修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值也不会被销毁,函数下次使用时任然能用到这个值
例:#includestaticintj;intk=0;voidfun1(void){staticinti;i++;}voidfun2(void){j++;}intmain(void){for(k=0;k=EPSINON)&&(a