C中的结构和typedef

时间:2012-02-07 14:19:26

标签: c

如果我创建了一个结构:

struct student {
int id;
char name [20];
student * next};

是什么意思:

typedef struct student student?

student * next是什么?

谢谢!

4 个答案:

答案 0 :(得分:3)

typedef会创建一个新名称。因此,这些完全相同:

student *next;
struct student *next;

在您的示例中,struct和typedef具有相同的名称。但它可能是这样的:

struct something {
/* ... */
};

typedef struct something student;

typedef的声明看起来就像它引入的类型。


作为旁注,things are different in C++

答案 1 :(得分:1)

typedef struct student student;

这会为struct student创建一个名为student的别名。

结构标记和类型名称存在于C中的两个不同的名称空间中(在C ++中不正确),因此允许对别名和标记使用相同的名称。

答案 2 :(得分:0)

在C中,每当使用结构时,您必须使用关键字struct。通过typedefing typedef struct student student,您只需说struct student就可以说student

答案 3 :(得分:0)

对于命名结构,关键字struct通常用于创建结构的实例并引用结构类型。

typedef允许您为student虚拟创建别名,而不必经常使用struct student,从而实际上使其更像内置类型。