1、定义变量
静态全局变量和普通全局变量的区别:
(1)作用域:头文件下的所有函数都可以用,两者相同
(2)生命周期:程序运行开始创建,程序结束才销毁,两者相同
(3)默认值:0,两者相同
(4)内存区域:全局(静态)变量区,两者相同
(5)唯一不同的就是链接属性,外部是否可链接。静态全局变量只能被文件内部的函数引用,普通全局变量可被多个文件引用。静态关键字其实也就是修饰链接属性,让其他文件不可以引用。
静态局部变量和普通局部变量的区别:
静态局部变量和全局变量的几点都相同。
(1)作用域:普通局部变量是在函数内部;静态局部变量是头文件下的所有函数都可以用
(2)生命周期:普通局部变量一进入函数内部就开始创建,函数一退出就销毁;静态局部变量程序运行开始创建,程序结束才销毁,两者相同
(3)默认值:普通局部变量的默认值为随机值;静态局部变量默认值为0
(4)内存区域:普通局部变量存放在栈中;静态局部变量存放在静态变量区。
2、定义静态函数
在函数的返回类型加上static关键字,函数即被定义成静态函数。静态函数有以下特点:
·只能在本文件中使用
·在文件作用域中声明的inline函数默认为static
C++中新增了两种作用:定义静态数据成员或静态函数成员
(1)定义静态数据成员。静态数据成员的特点:
··内存分配:在程序的全局数据区分配。
··初始化和定义:静态数据成员定义时要分配空间,所以不能在类声明中定义。
(2)静态成员函数。静态成员函数与类相联系,不与类的对象相联系。静态成员函数不能访问非静态数据成员。原因很简单,非静态数据成员属于特定的类实例,主要用于对静态数据成员的操作。
(3)静态成员函数和静态数据成员都没有this指针。