static, auto, register, extern,volatile这些关键字的区别,“externc”的意思是什么,面试官不停的追问为什么,为什么。
auto:具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。在函数内部定义的变量成为局部变量。
在c语言中 auto 被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。
在c++11之前auto关键字同上,但是在最新的c++11语法中被定义为自动推断变量的类型。例如:
auto x=5; //这里的x被推断为int 类型。
不过这里使用auto关键字时有一个限定条件,那就是必须给申明的变量赋予一个初始值,否则编译器在编译阶段将会报错。
register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。
extern:不论声明多少次,位于几个源文件中,都表示同一实体。