static与extern区别
静态成员(static)
-
静态全局变量:
限制作用域,只在定义该变量的源文件内有效
作用于全局变量时: 叫静态全局变量。表示该变量是私有的,只能在该文件使用。不能通过extern关键字对其引用。
-
静态局部变量:
改变局部变量的生存周期,使得该变量存在于定义直到程序运行结束; 类内声明,类外初始化;
作用于局部变量时: 叫静态局部变量,在函数调用时,只有在该函数第一次调用时才对其分配空间和初始化。在函数调用结束时,不对该变量的内存进行释放,值仍然保留。这也是于自动变量的区别。
所有对象共享同一份数据
-
静态成员变量
所有对象共享同一个函数; 静态成员函数不能声明为虚函数、const函数、volatile函数; 静态成员函数只能访问静态成员变量
作用于函数时: 叫静态函数,表示该函数是私有的,只能在本文件中使用,不能通过extern关键字对其引用
extern
- 本文件: 定义在本文件下面的全局变量,想要在上面使用时需要使用extern关键字对其声明
- 其他文件:定义在其他文件的全局变量想要在本文件使用时,若该变量未被static修饰时可通过extern关键字在本文件对其声明。即可使用