静态结构和正常结构有什么区别?

kar*_*olu 5 c c++ static structure

我这里有一个代码示例.

struct node { 
        int data;
        struct node *link;
    };
    static struct node *first = NULL;
Run Code Online (Sandbox Code Playgroud)

如果有人能够对我在下面关于静态这个词的使用的问题提出一些看法,那就太棒了.

  1. 关键字static在上面的代码中做了什么?

  2. 普通结构和静态结构有什么区别?

Luc*_*ore 7

它创建了一个静态指针,node并将其初始化为NULL.

变量定义可以有多种含义:

static struct node *first = NULL;
Run Code Online (Sandbox Code Playgroud)

如果在方法之外定义,则它提供first 内部链接.它只能在定义模块中使用.

但是你也可以在方法中找到该行:

void foo()
{ 
    static struct node *first = NULL;
}
Run Code Online (Sandbox Code Playgroud)

该变量是驻留在静态存储中的方法范围变量.它被初始化为NULL一次,所有后续更改在函数调用之间保持不变.


MBy*_*ByD 5

这意味着此变量可能不在此模块之外使用.

例如 - 您无法使用其他文件引用此指针

extern struct node *first;
Run Code Online (Sandbox Code Playgroud)

一个重要的注意事项是struct不是静态的,只有first指向这种结构的指针才是静态的.