C中的“静态”是啥意思?` [重复]
Posted
技术标签:
【中文标题】C中的“静态”是啥意思?` [重复]【英文标题】:What does "static" mean in C?` [duplicate]C中的“静态”是什么意思?` [重复] 【发布时间】:2011-01-18 05:43:49 【问题描述】:可能的重复:What does “static” mean in a C program?Static vs global
C中的“static”是什么意思,举个例子:“static struct ........”?
这和没有“静态”的“结构......”有什么区别?
【问题讨论】:
“搜索引擎”是什么意思?被骗很多次,跳跃前请先看。 ***.com/questions/572547/… 【参考方案1】:我不是 C 程序员,但如果 C 中的 static
与其他语言中的含义类似,我会使用 STATIC STRUC,这意味着该结构在此类的所有实例中都是通用的。
假设我有一个名为 Z 的类变量。通常的行为是该变量的值特定于类的特定实例,但是当它是静态时,该类的所有实例共享相同的 Z 值任何时候。
我不知道这如何适用于 C,C 不是无对象吗?
【讨论】:
【参考方案2】:static 告诉函数或数据元素仅在 当前编译。
此外,如果您将 static 关键字与函数的本地变量一起使用,它允许在对该函数的连续调用之间保留变量的最后一个值。
如果你说:
static struct ...
在源文件中没有其他源文件可以使用结构类型。甚至没有外部声明。但如果你说:
struct ...
然后其他源文件可以通过外部声明访问它。
【讨论】:
【参考方案3】:在函数之外,static 使应用的任何内容都具有文件范围。例如:
int a_function(int x) ...
此函数将具有全局链接,并且可以被任何其他目标文件访问。你只需要声明它就可以使用它,就像通常在头文件中所做的那样:
int a_function(int x);
但是,如果在定义中使用 static,则该函数仅对定义它的源文件可见:
static int a_function(int x) ...
在这种情况下,其他目标文件无法访问此功能。这同样适用于变量:
static int x;
这使 x 成为全局变量,仅在其源文件中可见。 “静态结构”本身不做任何事情,但请考虑以下语法:
struct
int x;
int y;
p1, p2;
这声明了两个全局变量(p1 和 p2),每个变量都是“匿名”结构类型。如果你附加静态:
static struct
int x;
int y;
p1, p2;
然后静态应用于 p1 和 p2,使它们仅在其源文件中可见。
【讨论】:
以上是关于C中的“静态”是啥意思?` [重复]的主要内容,如果未能解决你的问题,请参考以下文章