关键字static在C和C++中的作用

来源:互联网 发布:过河进销存软件 编辑:程序博客网 时间:2024/05/16 08:50

在C语言中,关键字static主要有两个作用,C++对它进行了扩展。

起初,C语言中引入关键字static是 为了表示退出一个块后仍然存在的局部变量,后来引入了一种新的含义,表示不能被其他文件访问的全局变量和函数。
在C++中,static还可以表示属于整个类而不是属于某个特定对象的成员函数和成员变量。

static的作用总结如下:
1.修饰局部变量
2.修饰全局变量和函数
3.修饰成员变量和成员函数

一、static修饰局部变量
局部变量是声明在代码块内部的变量,其作用域为此代码块,存在栈中;加static修饰后作用域不变,但是存在静态区,即使此代码块运行结束,这个静态变量的值还是不会被销毁,代码块下次使用时还能用到这个值。

二、static修饰全局变量和函数
全局变量是声明在代码块之外的变量,其作用域为整个程序,存在静态区;
加static修饰后作用域变为在此变量被定义的文件中,从定义之处开始,到文件结尾处结束,存储位置不变。

函数加static修饰后,变为静态函数,使得函数的作用域仅限于本文件。

三、static修饰成员变量和成员函数
在类中,成员函数和成员变量加上static修饰后,表示其属于整个类而不是属于某个特定对象。成员函数没有了this指针,成员变量被所有类的对象共享,都可以通过类名和域运算符访问,例如int A::_a =0; A::GetValue();

ps:
静态区(全局区)
未初始化的全局变量和静态变量存在bss段;
初始化的全局变量和静态变量存在data段。

0 0