这个 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
的指针,NULL
在stdio.h
中被定义为((void *)0)
。你会更好:
static struct sym_table *sym_array = NULL;
这是 Stroustrup 的方式。他讨厌宏。所以他总是在他的代码中使用 0
或最终在引入关键字 nullptr
时使用 nullptr
。我认为它来自C++代码或通常使用C++的人编写的程序。
我正在尝试通读一些 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
的指针,NULL
在stdio.h
中被定义为((void *)0)
。你会更好:
static struct sym_table *sym_array = NULL;
这是 Stroustrup 的方式。他讨厌宏。所以他总是在他的代码中使用 0
或最终在引入关键字 nullptr
时使用 nullptr
。我认为它来自C++代码或通常使用C++的人编写的程序。