【发布时间】:2020-05-12 00:26:09
【问题描述】:
我一直在研究单链表,并与两个不同的typedef struct 实现交叉。
1st(在CS50讲座讲解):
// Represents a node:
typedef struct node
{
int number;
struct node *next;
}
node;
第2名(在CS50短视频讲解):
typedef struct sllist
{
int number;
struct sllist *next;
}
sllnode;
我的问题是:
在前一个实现中,编译器如何区分node,别名和node,struct?
为什么它能够区分struct 和typedef,但我不能使用相同的变量名来表示int 和string,例如?
【问题讨论】:
-
它们被放在不同的“命名空间”或“类别”中。
-
一个是
struct node,另一个是node,这将是同一件事,但*next;作为自引用成员node尚未定义,所以它有成为struct node。 -
虽然对于 C++(因此不是纯 C 和 存在差异),stackoverflow.com/a/612350/2864740 可能是一个不错的读物。它还包括指向 C 资源的链接。我无法很快找到关于 SO 的类似 C 特定答案,尽管应该可以使用它来搜索。
标签: c data-structures struct typedef cs50