我知道c中的关键字有两种用法:
-
修改变量
-
修改功能
这意味着只能调用它定义的文件中的函数。
在c++中,除了c中的用法之外,static
也用于修改类的数据成员和函数成员。这种用法限制了属于该类的成员而不是该类的对象。
我想知道还有什么其他用途吗static
在c/c++中?
static
可能是 C 和 C++ 中最容易混淆的重载关键字。它在不同的地方意味着不同的东西。
-
在函数内,static
is a 存储类,表示程序生命周期内存在的变量。这么说
void f() {
static int i = 0;
}
说的是i
将在调用之间保留f()
。其他存储类别默认即可auto
(但要注意 C++11 中含义的变化),extern
, and register
, plus thread_local
在 C11/C++11 中。
-
在文件范围(或 C++ 中的命名空间范围),static
is a 链接说明符。标记的函数和变量static
这样就有内部联系,等等对于当前翻译单元来说都是本地的。这意味着像这样的函数
static int f() {
return 3;
}
只能被同一内部的其他函数引用.c
文件。这种用法static
在 C++03 中已被弃用,取而代之的是未命名的命名空间。我在某处读到它在 C++11 中再次被弃用。
在C++中,当应用于类的成员函数或成员变量时,意味着该函数或变量不需要类实例即可访问。除了 C++ 类访问说明符适用于成员之外,“类静态”成员函数/变量和全局函数/变量在实现方面几乎没有什么区别。
-
最后一项:在 C99(但不是 C++)中,static
可以在数组函数参数中使用,如下所示:
void f(int a[static 4]) {
}
这指定了参数a
必须由大小至少为 4 的整数数组组成。
我想这就是全部了,如果有忘记的,请在评论中告诉我!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)