> 文档中心 > 【C语言中struct typedef以及结构体指针--01】--混淆

【C语言中struct typedef以及结构体指针--01】--混淆


typedef 类型定义

typedef struct:是为了使用这个结构体更方便。
具体解释:
举例:如果定义一个node类型的结构体的变量

//这里仿照int类型的定义方法int a;struct node b;//这里为啥加入struct因为:这个node结构体是我们自己定义的变量类型,所以前面需要加入struct

区别加入typedef的用法:

//未加入typedef的原始定义方法struct node n;//加入typedef方法typedef struct node {}N;//运用typedef相当于struct node N,这样申请变量的时候直接用N来定义变量的类型就很简单//在这里表明N是struct node的**别名**N n;//区别就是定义变量的时候可以省去struct关键字

typedef用法:

用法一:typedef struct student{......//若干定义结构体包含的东西}stu,student表示定义了两个struct student 结构体类型的别名
可以直接通过两个别名定义变量。
stu Student1
student Student2
用法二:如果没有typedef那么相当于定义了一个结构体

struct Student{int NUM;char Name[12];}student1//表示定义了一个名字为student1的结构体Student的变量。//如果再次定义student2必须struct Student student2;

摘自博文自己已经理解:
typedef用法

struct x_1{...}x1;//定义了一个为x_1类型的x1实例对象typedef struct x_1{...}x1;//表示将结构体类型:struct x_1定义了一个别名x1;

取自宝藏博文精髓!!秒懂
宝藏博文link~~~
在这里插入图片描述

结构体与指针:

定义:指针指向的 是变量所占的内存的首地址。在结构体中,指针指向的是结构体变量的起始地址,也可以指向结构体变量的元素
指向结构体变量的指针struct 结构体变量名 *结构体指针名
例如:struct Student *p

struct student student1;struct student *stu;stu = student1;

用结构体指针变量访问结构体变量成员

  • stu->结构体变量成员名;
  • 结构体变量.结构体成员名;
  • (*stu).成员名;

写在最后:
对比

typedef char ch;//表示为char类型的数据定义了一个新名字chtypedef struct BitNode BitNode //等价于将struct BitNode从新定义了一个新名称叫做BitNode//所以两种类型声明变量均可struct BitNode BN_1<=>BitNode BN_1;//对于另一种定义方式typedef struct BitNode* BTP;//表示将struct BitNode*类型重命名为BTP也就是表明struct BitNode *p中声明的指针p中用于存放这个结构体类型变量的地址typedef struct BitNode* BitTree;struct BitNode* p<=> BitTree p;//struct BitNode <==>BitNode;//struct BitNode*<==> BitTree;

宝藏博客在此,感谢大佬