C语言中:static关键词有三种用途
1.静态局部变量
特点:
-
该变量在全局数据区分配内存(局部变量在栈区分配内存)
-
静态局部变量在程序执行到该对象的声明处时被首次初始化,以后不会再进行初始化
-
如果没有显式初始化,会被程序自动初始化为0(局部变量不会被初始化)
-
静态局部变量始终留在全局数据区明知道程序结束,但作用域始终在局部作用域中。
2.静态局部变量
特点:
-
静态全局变量不能被其他文件所用(全局变量可以)
-
其他文件中可以定义相同名字的变量,不会冲突(因为static作用于文件)
3. 静态函数
特点:
-
静态函数不能被其他文件所用(extern)
-
不同文件定义相同静态函数不会发生冲突
C++语言中:static关键词有两种用途
1.静态数据成员
特点:
-
分配在全局数据区,不占用对象内存空间
-
静态数据成员只初始化一次
2.静态成员函数
特点:
-
静态成员之间可以相互访问
-
非静态成员函数可以任意访问静态成员函数和静态数据成员
-
静态成员函数不能访问成员函数和成员变量