Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的结构和类型定义_C - Fatal编程技术网

C中的结构和类型定义

C中的结构和类型定义,c,C,如果我创建了一个结构: struct student { int id; char name [20]; student * next}; 以下是什么意思: typedef struct student student? 学生*下一步做什么 谢谢大家! Atypedef创建一个新名称。因此,这些是完全等效的: student *next; struct student *next; 在您的示例中,struct和typedef具有相同的名称。但可能是这样的: struct something

如果我创建了一个结构:

struct student {
int id;
char name [20];
student * next};
以下是什么意思:

typedef struct student student?
学生*下一步做什么


谢谢大家!

A
typedef
创建一个新名称。因此,这些是完全等效的:

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

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

typedef struct something student;
typedef的声明与它引入的类型类似



作为旁注,.

在C中,无论何时使用结构,都必须使用关键字
struct
。通过typedefing
typedef struct student-student
,您可以说
struct student
,只要说
student
一个命名结构,关键字
struct
通常用于创建结构实例并引用结构类型


typedef
允许您虚拟地为
student
创建一个别名,而不必经常使用
struct student
,从而使它的行为更像一个内置类型。

typedef struct student

这将为
struct student
创建一个名为
student
的别名


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

您是否考虑过读取一个?并且您可以捷径执行
typedef struct something{…}something
@Eregrith:甚至
typedef struct{…}什么的快捷方式不起作用。在这种情况下,如果要在结构定义中使用typedef名称,则需要在定义结构之前首先对不完整的结构类型进行typedef。