首页 >常见问题 >C语言中静态变量有什么用

C语言中静态变量有什么用

清浅
清浅原创
2019-05-05 16:42:0420513浏览

C语言中静态变量的作用是在函数调用的过程中保持值不变,因为静态变量具有记忆作用;但是其作用域范围是有限的,只能被模块内的函数访问等。

C语言中静态变量有什么用

推荐:《c教程

C语言中静态变量的作用是:静态变量具有记忆作用,在函数调用的过程中保持值不变;作用域范围是有限的,只能被模块内的函数访问等。

C语言中静态变量有什么用

在C语言中,关键字static的意思是静态的,有3个明显的作用:

1. 在函数体内,静态变量具有记忆作用,即一个被声明为静态的变量在这一函数被调用的过程中其值维持不变。

2. 在模块内(但在函数体外),它的作用域范围是有限制的,如果一个变量被声明为静态的,那么该变量可以被模块内所有的函数访问,但不能被模块外的其他函数访问。

3. 内部函数应该在当前源文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件要包含这个头文件。

静态数据成员的特点:

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;
void fun(int i)
{    static int value = i++;
    cout<<value<<endl;
}int main()
{
    fun(0);
    fun(1);
    fun(2);    return 0;
}

运行结果

0
0
0

以上是C语言中静态变量有什么用的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn