C语⾔结构体typedefstruct详解
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是⼀个变量
c语言struct头文件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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论