Static关键字的作用

在C++、C、Java等高级语言中均有关键字static

C语言中

static的含义不是存储方式,而是指对函数的作用于仅仅局限于本文件。

函数分为内部函数和外部函数

static作用于函数:

内部函数:又称静态函数,“static”的含义就是作用域仅局限于本文件,就是在一个源文件中定义的函数,只能被本文件中的函数调用。定义内部函数的方法:函数类型前面加“static”关键字。

好处:不同的人编写不同的函数,不用担心自己定义的函数,是否会与其他文件中的函数同名。

外部函数:定义函数时,没有加关键字“static”或者冠以关键字“extern”,表示该函数是外部函数。例如:

文件subf1.c

……extern void input(……) /*定义外部函数*/{……}

调用外部函数时,需要进行说明,例如:

main()

{

extern void input(…),process(…),output(…);

input(…);

process(…);

output(…);

}

static作用于变量

声明局部静态变量,对外部函数透明,子函数销毁/变量仍然存放在内存中。存放区域:静态区,详见C/C++程序内存分配。即只有唯一的静态分配的变量。

带有static类型的函数被称为带“内部存储器”的功能的函数。

作用:

1、隐蔽:

2、变量内容的持久

3、默认初始化为0

    存储在全局区的变量都默认初始化为0,所有字节的默认值:0x00。

JAVA 语言中

static作用于变量

静态变量或类变量,可以直接通过类名调用静态变量,也可以使用实例名。但是静态变量是和类相关联,类的所有实例共同拥有一个静态变量。

static作用于函数

静态方法或类方法,可以通过类名直接调用。静态方法中不可以使用this关键字,因为静态方法不属于任何一个实例。

在static方法中不可以引用任何实例变量和实例方法。


使用static修饰符声明属于类型本身而不属于特定对象的静态成员。static修饰符可用于字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。

C++语言中

函数内部声明的static变量,可以作为对象间的一种通信机制。

C语言+属于类而不属于任何实例。如可以通过类名调用以及存储的区域和默认值等等。

C/C++函数中必须使用static变量的情况:当函数的返回值为指针类型时,必须是static 类型的返回值,若为auto类型,则返回为错误指针。

你可能感兴趣的:(Static关键字的作用)