这个 C 结构赋值是啥意思?

Posted

技术标签:

【中文标题】这个 C 结构赋值是啥意思?【英文标题】:What does this C struct assignment mean?这个 C 结构赋值是什么意思? 【发布时间】:2018-04-09 06:30:36 【问题描述】:

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

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

我了解左侧正在尝试初始化指向“sym_table”类型结构的指针(在其他地方定义);但是,我很难理解右手边。这可能相当简单,但我在我看过的任何在线 C 教程中都找不到任何类似的此类分配示例。

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

【问题讨论】:

它将 0 值转换为正确的指针类型以设置为 0。使用NULL 宏会更好。 它将 0 转换为指向该结构的指针,但这不是正确的方法 - 使用 NULL 是首选方法。 【参考方案1】:

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

【讨论】:

但我看到了 C++ 的灵魂 :) 此方法的优点是您不必定义或包含任何内容。你可能是对的。【参考方案2】:
static struct sym_table *sym_array = (struct sym_table *) 0;

设置指向NULL 的指针有点麻烦,NULLstdio.h 中定义为((void *)0)。你最好:

static struct sym_table *sym_array = NULL;

【讨论】:

好的,谢谢。是的,设置空指针似乎是一种相当冗长的方法:-)【参考方案3】:

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

【讨论】:

以上是关于这个 C 结构赋值是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

这个赋值运算符后面的 & 是啥意思?

c语言中num是啥意思

C语言中,对枚举值赋值是啥意思?

javascript中的多重赋值? [a,b,c] = [1, 2, 3] 是啥意思?意思是?

C语言问题 赋值表达式返回值是啥?比如j=0这个表达式的返回值是啥?

c里面,double a=0.65f 这样的赋值是啥意思,是错的吗?