static变量的作⽤
在C语⾔中,关键字static的意思是静态的,有3个明显的作⽤:
1. 在函数体内,静态变量具有记忆作⽤,即⼀个被声明为静态的变量在这⼀函数被调⽤的过程中其值维持不变。
2. 在模块内(但在函数体外),它的作⽤域范围是有限制的,如果⼀个变量被声明为静态的,那么该变量可以被模块内所有的函数访问,但不能被模块外的其他函数访问。
3. 内部函数应该在当前源⽂件中说明和定义,对于可在当前源⽂件以外使⽤的函数,应该在⼀个头⽂件中说明,使⽤这些函数的源⽂件要包含这个头⽂件。static全局变量和普通全局变量的区别:static全局变量只初始化⼀次,这是为了防⽌它在其他⽂件单元中引⽤。
static局部变量和普通局部变量的区别:static局部变量只初始化⼀次,下次的运算依据是上⼀次的结果值。
static函数与普通函数的区别在与作⽤域不⼀样,static()函数只在⼀个源⽂件中有效,不能被其它源⽂件使⽤。
静态数据成员的特点:
1. 对于⾮静态数据成员,每个类都有⾃⼰的复制品。⽽静态数据成员被当做是类的成员。⽆论这个类的对象被定义了多少个,静态数据成员在程序中也只有⼀份复制品,由该类型的所有对象共享访问。
2. 静态数据成员存储在全局数据区。定义时要分配空间,所以不能在类声明中定义。由于静态数据成员属于本类的所有对象共享,所以他不属于特的类对象,在没有产⽣类对象时,其作⽤域就可见,即在没有产⽣类的实例时,程序员也可以使⽤它。
3. 静态数据成员也遵从public、protect、private访问规则。
4. static成员变量的初始化在类外,此时不能再带上static的关键字。private、protect的static成员虽然可以在类外初始化,但是不能在类外被访问。
静态数据成员的优势:
1. 静态数据成员没有进⼊程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性。
2.可以实现信息隐藏。静态数据成员可以使private成员,⽽全局变量不能。
#include<stdio.h>
#include <iostream>
#include "a.h"
using namespace std;
static修饰的变量void fun(int i)
{
static int value = i++;
cout<<value<<endl;
}
int main()
{
fun(0);
fun(1);
fun(2);
return0;
}
运⾏结果: 0
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论