700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言结构体typedef struct详解

C语言结构体typedef struct详解

时间:2023-04-13 06:37:38

相关推荐

C语言结构体typedef struct详解

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.astu2是一个结构体类型,使用时则必须先 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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。