如果我创建了一个结构:
struct student {
int id;
char name [20];
student * next};
是什么意思:
typedef struct student student?
student * next
是什么?
谢谢!
答案 0 :(得分:3)
typedef
会创建一个新名称。因此,这些完全相同:
student *next;
struct student *next;
在您的示例中,struct和typedef具有相同的名称。但它可能是这样的:
struct something {
/* ... */
};
typedef struct something student;
typedef的声明看起来就像它引入的类型。
答案 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
,从而实际上使其更像内置类型。