static 的作用
一、static 在C语言中,主要定义静态全局变量,定义静态局部变量,定义静态函数
1. 静态全局变量的特点:
(1)在全局数据区分配内存
(2)如果静态全局变量没有初始化,其默认值为 1
(3)该变量在本文件内从定义开始到文件结束均可见
2. 静态局部变量的特点:
(1)该变量在全局数据区分配内存
(2)如果不显示初始化,那么将被隐式初始化为 0
(3)该变量始终驻留在全局数据区,知道程序运行结束
(4)其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束
3. 静态函数的特点:
(1)静态函数只能在本源文件中使用
(2)在文件作用域中声明的 inline 函数默认为 static
静态函数只是一个普通的全局函数,只不过收 static 限制,它只能在文件所在的编译单位内使用,不能在其他编译单位内使用。
二、static 在C++语言中新增了两种作用,定义静态数据成员或静态成员函数
1. 静态数据成员的特点:
(1)在程序的全局数据区分配内存
(2)静态数据成员定义时要分配空间,所以不能在类声明中定义
(3)没有 this 指针
2. 静态成员函数
(1)静态成员函数与类相联系,不与类的对象相联系。静态成员函数不能访问非静态成员的数据。
原因很简单,非静态成员函数属于类作用域,主要用于对静态数据成员的操作
(2)没有 this 指针