static关键字的功能
转载:https://blog.csdn.net/guotianqing/article/details/79828100
C语言&C++
1、局部变量
如果在一个函数内部定义了一个静态变量,只给它赋值一次,如果它没有初始值,默认初始值为0,第二次调用函数的时候就不在定义它(即只定义一次)。
静态局部变量的作用范围是函数的作用域内。
eg:
#include<stdio.h> void f() { static int num=1; printf("%d ",num++); } int main(void) { int i,n=3; while(n--) { f(); } return 0; }
View Code
运行结果:1 2 3
2、全局变量
如果定义在函数外面作为全局变量,编译器会对它初始化,
这个变量仅对当前文件可见,其他文件不可访问,但其他文件可以定义与它相同名称的变量(作用:避免冲突)
3、函数
(1)静态函数只在声明它的文件中可用,其他文件不可用
(2)不同的文件可以定义相同的静态文件名称,互相不影响。
面向对象:
1、静态数据成员:
(1)是全局变量,不能再类定义时声明
(2)静态数据成员是类的成员,对所有类的成员都可见
(3)遵从public,private,protect的规则
(4)访问方式:<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
2、静态成员函数
(1)属于整个类,不属于某一个成员函数
(2)没有this指针,无法访问非静态成员函数
(3)出现在类外的成员函数不能用static
(4)非静态成员函数可以随意的访问所有静态成员函数。