这个 C 结构赋值是什么意思?

What does this C struct assignment mean?

我正在尝试通读一些 C 源代码,但遇到了一个我不理解的结构赋值:

static struct sym_table *sym_array = (struct sym_table *) 0;

我知道左边试图初始化一个指向 'sym_table' 类型结构的指针(在别处定义);但是,我很难理解右侧。它可能相当简单,但我在我看过的任何在线 C 教程中都找不到此类赋值的任何类似示例。

如果有人能对此有所了解,我将不胜感激!

右边相当于NULL指针。但在这里,它是一个 NULL 类型的指针 (struct sym_table *)

static struct sym_table *sym_array = (struct sym_table *) 0;

是一个稍微麻烦的方法来设置指向NULL的指针,NULLstdio.h中被定义为((void *)0)。你会更好:

static struct sym_table *sym_array = NULL;

这是 Stroustrup 的方式。他讨厌宏。所以他总是在他的代码中使用 0 或最终在引入关键字 nullptr 时使用 nullptr。我认为它来自C++代码或通常使用C++的人编写的程序。