1)C 语言的 static 关键字有三种:
1.静态局部变量;
2.静态全局变量;
3.静态函数
(注:对应于上面图片,static修饰普通变量分为静态局部和静态全局两种。静态全局变量和静态函数的作用类似,均只在本文件内可见,不能为其他文件所用,故其实也可以将静态全局变量和静态函数作为一类,而静态局部变量为另一类。)
2)C++ 语言的 static 关键字新增两种:
4.静态数据成员;
5.静态成员函数。
#重要知识点总结#
1) 静态局部变量的特点:
1.该变量在全局数据区分配内存(局部变量在栈区分配内存);
2.静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化(局部变量每次函数调用都会被初始化);
3.静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0(局部变量不会被初始化);
4.它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,也就是不能在函数体外面使用它(局部变量在栈区,在函数结束后立即释放内存);
2) 静态成员函数的特点:
1.静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
2.非静态成员函数可以任意地访问静态成员函数和静态数据成员;
3.静态成员函数不能访问非静态成员函数和非静态数据成员;
4.调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以用类名::函数名调用(因为他本来就是属于类的,用类名调用很正常)
5. 静态成员函数没有this指针,它无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,它只能调用其余的静态成员函数
6.出现在类体外的函数定义不能指定关键字static
原文链接:https://blog.csdn.net/majianfei1023/article/details/45290467
https://blog.csdn.net/guotianqing/article/details/79828100