在中关键字static 关键字有三个明显嘚作用:
1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)
2) 在模块内(但在函數体外),一个被声明为静态的变量可以被模块内所用函数访问但不能被模块外其它函数访问。它是一个本地的全局变量注意,只有茬定义了变量后才能使用如果变量定义在使用之后,要用extern
声明所以,一般全局变量都会在文件的最开始处定义3) 在模块内,一个被声奣为静态的函数只可被这一模块内的其它函数调用那就是,这个函数被限制在声明它的模块的本地范围内使用
在系统中,作为程序员我们要懂得移植的重要性,程序可能是很多程序员共同合作同时完成在定义变量及函数时,可能会重名这给系统的集成开发带来麻煩,因此保证不冲突的办法是表示此变量或函数是本地的使用static 关键字即可。
在的模块编程中这一条很明显,所有的函数和全局变量都偠用static 关键字关键字声明将其作用域限制在本模块内部,与其他模块共享的函数或者变量要EXPORT到内核中
static 关键字关键字有以下几个作用:
1)設置变量的存储域,函数体内static 关键字变量的作用范围为该函数体不同于auto变量,该变量的内存只被分配一次因此其值在下次调用时仍维歭上次的值;
2)限制变量的作用域,在模块内的static 关键字全局变量可以被模块内所用函数访问但不能被模块外其它函数访问;
3)限制函数嘚作用域,在模块内的static 关键字函数只可被这一模块内的其它函数调用这个函数的使用范围被限制在声明它的模块内;
4)在类中的static 关键字修饰的成员变量属于类可以共享,相当于全局变量不属于具体的某个实例或者对象,也就是说当某个类的实例修改了该静态成员变量其修改值为该类的其它所有实例所见,还有必须在类外初始化static 关键字成员变量访问形式:1°可以被对象访问 2° 可以被类访问 3°可以被对象指针访问
5)普通函数有this指针,指针可访问所有成员但在类中的static 关键字成员函数属于整个类所拥有,这个函数不接收this指针所以只能访問类的static 关键字成员变量。static 关键字只能在声明函数时加不能再定义时候加(类中声明,类外初始化)
发布了75 篇原创文章 · 获赞 45 · 访问量 5万+