在我们编程过程
中或者是在我们看他人代码的过程中,相信大多数(程序)猿友们都会遇到static和extern。或许遇到static会更多一些,比如创建单例时用到了static;再比如,创建tableview,cell的重用标示符时用到了static等等。那么static到底有什么作用呢?接下来让我们一睹为快,请看下一段。
咱们先来说说static——static通常是用来修饰局部变量的。一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变化,但是其作用域并没有改变,其仍然是一个局部变量,作用域仅限于该语句块。并且,在用static修饰局部变量后,该变量只在初次运行时进行初始化工作,且只进行一次。
咱们再说extern ——在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。打个比方,在文件file1中定义一个变量a,如果想在在file2中调用file1中的变量a,只须用extern进行声明即可调用a,这就是extern的作用。在这里要注意extern声明的位置对其作用域也有关系,如果是在main函数中进行声明的,则只能在main函数中调用,在其它函数中不能调用。其实要调用其它文件中的函数和变量,只需把该文件用#include包含进来即可,为啥要用extern?因为用extern会加速程序的编译过程,这样能节省时间。