在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类型,则返回为错误指针。
网友评论