1、typedef关键字
C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE:
typedef unsigned char BYTE;
在这个类型定义之后,标识符 BYTE 可作为类型 unsigned char 的缩写,例如:
BYTE b1, b2;
typedef相当于给unsigned char起了一个别名。
typedef vs #define
#define 是 C 指令,用于为各种数据类型定义别名,与 typedef 类似,但是它们有以下几点不同:
-
typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。
-
typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。
2、typedef struct
typedef struct的使用方法有很多种,这里只介绍最标准的一种使用方法:
声明:
typedef struct Student { int a; }Stu;
使用:
Stu xiaoming;
区别:
若struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n; 若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n; 区别就在于使用时,是否可以省去struct这个关键字。
但是在C++中又会造成区别:
在c++中如果用typedef的话:
struct Student { int a; }stu1;//stu1是一个变量 typedef struct Student2 { int a; }stu2;//stu2是一个结构体类型
stu1是一个变量,使用时可以直接访问stu1.a stu2是一个结构体类型,使用时则必须先 stu2 s2
3、结构体指针
定义:
typedef struct Student { int a; }Stu,*pStu;
使用:
pStu exam1; Stu exam2; exam1 = exam2; exam2.a = 1; printf("%d",exam1->a);//输出为1
或者:
Stu exam[4]; pStu p; p = exam; p +=2;//等价于p = exam[1]
等价于:
typedef struct Student { int a; }Stu;
Stu *exam1; Stu exam2; exam1 = exam2; exam2.a = 1; printf("%d",exam1->a);//输出为1
今天的文章C语言结构体typedef struct详解分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/24337.html