【发布时间】:2016-10-20 12:26:50
【问题描述】:
我的讲师提供了以下一段代码,但没有充分解释它代表什么。
typedef struct _s {
int value;
struct _s *next;
} STACKITEM;
STACKITEM *stack = NULL;
我了解指针和结构是什么。但是,我不知道在结构中具有指向结构的指针意味着什么。请澄清并详细说明这个概念。
我不明白为什么将结构声明为 typedef。这似乎是多余的,原因如下:
一个典型的结构状态如下。
struct struct_format_name {
members;
} individual_struct_object_name;
因此,我们将一个对象声明为一个结构,并将这种结构的格式命名为_s。那么使用 typedef 有什么意义呢?除了 typedef 关键字之外,它与您用于声明任何结构的格式相同。
- 我想澄清一下指向结构化格式的结构的指针(如上所述)与指向特定结构的结构的指针之间的区别。
我怀疑指向结构化格式的结构的指针,如上所述,可以指向该格式的任何结构?但是,指向具体结构的结构的指针只能指向那个特定的结构,而不是相同格式的其他结构?
【问题讨论】:
-
请一问一答。
-
是的,typedef 是无用的(在大多数情况下)并且令人困惑(就像你的情况一样)我的建议:如果你不需要它:不要使用它。
-
第一个结构是一个链表:一个对象链,其中每个对象指向下一个对象。 typedef 可能是一种方便,或者更有可能:隐藏实现。很像
FILE是底层文件结构的 typedef。 -
Xaxxion 的回答与我的观点并不冲突。事实上,他说最终这两种形式是等价的(结果是一样的),我的意见是你只需要一种形式(并且为已经有的东西引入另一个名字不需要名称。可能会造成混淆)
-
@ThePointer:不,可以说,它并没有涵盖你所有的问题,但其中没有什么让我觉得不正确
标签: c pointers data-structures struct