【C语言】typedef的用法简析

简介: 【C语言】typedef的用法简析

前言


C语言中typedef可以为一个数据类型定义别名(可以理解为人类的绰号),用来替代基本数据类型,数组类型,指针类型,自定义的结构体类型,枚举类型等等;这样使用可以让我们编码方便。下面我来看它在结构体中两个用法


定义基本类型和结构体

typedef int STDataType;
typedef struct Stack
{
STDataType* a;
int top; // 栈顶
int capacity; //容量
}ST;


正常定义一个结构体变量我们需要这样写:

struct Stack st1;


这样写每回要写struct感觉很麻烦,但不写又会报错,如果可以为 struct Stack 起一个别名ST(语法是在分号后面接起的新名字 如ST),这样写起来就方便了:

ST st1;


这样写好处是:写法更加简练,意义更加明确,工程实践中更会大量使用


同样的,我们可以使用关键字typedef 为各种数据类型起一个别名:

typedef int STDataType; // typedef oldname newname
typedef int STDataType;
STDataType a,b;
a = b =1;

这样做的好处是:我们在头文件中为一个数据类型起一个别名,后续会很方便的修改变量类型


typedef不仅可以为结构体也可以为数组、指针等类型起别名:

数组

typedef char array10[10];
array10 a1,a2,a3;
//等价于:
char a1[10],a2[10],a3[10];

指针

typedef int* (*pfun)(int,char*);
pfun a[5];
// 等价于
int * (*a[5]) (int ,char*);


与#define的区别:

#define 是宏定义,会在代码生成程序的预处理阶段进行宏替换(预处理功能主要包括宏定义,文件包含,条件编译,去注释等);

typedef 类似于将数据类型封装起来,能够保证定义的所有变量为同一类型

#define PTR_INT int *
PTR_INT p1, p2;


宏替换后:

int *p1, p2;


这里 p1、p2 成为不同的类型:p1 是指向 int 类型的指针,p2 是 int 类型。

typedef int * PTR_INT
PTR_INT p1, p2;



这里p1、p2 类型相同,它们都是指向 int 类型的指针。

本节完

相关文章
|
6月前
|
编译器 C语言
C语言的转义字符,转义字符的用法
C语言的转义字符,转义字符的用法
|
6月前
|
算法 编译器 C语言
C语言猜数字小游戏(也包含python实现的用法)
本文基于VS2022、pycharm和前面的知识,写一个凭借分支与循环的小游戏,比如: 写一个猜数字游戏 游戏要求: 电脑自动生成1~100的随机数 玩家猜数字,猜数的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束 在pyhton中生成随机数是比较简单的,可以直接导入random的包,直接生成随机数,导致写猜数字小游戏变成了判读语句和循环语句嵌套就能写出来,所以我不做过多的介绍了,可以直接看后面的代码展示,想了解更多的python可看python的基础知识,这里面有我在学习python的过程中写的笔记
87 0
|
2月前
|
C语言
C语言判断逻辑的高阶用法
在C语言中,高级的判断逻辑技巧能显著提升代码的可读性、灵活性和效率。本文介绍了六种常见方法:1) 函数指针,如回调机制;2) 逻辑运算符组合,实现复杂条件判断;3) 宏定义简化逻辑;4) 结构体与联合体组织复杂数据;5) 递归与分治法处理树形结构;6) 状态机管理状态转换。通过这些方法,可以更高效地管理和实现复杂的逻辑判断,使代码更加清晰易懂。
229 88
|
1月前
|
编译器 C语言
C语言:typedef 和 define 有什么区别
在C语言中,`typedef`和`#define`都是用来创建标识符以简化复杂数据类型或常量的使用,但它们之间存在本质的区别。`typedef`用于定义新的数据类型别名,它保留了数据类型的特性但不分配内存。而`#define`是预处理器指令,用于定义宏替换,既可用于定义常量,也可用于简单的文本替换,但在编译前进行,过度使用可能导致代码可读性下降。正确选择使用`typedef`或`#define`可以提高代码质量和可维护性。
|
3月前
|
存储 缓存 编译器
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(下篇)
scanf处理⽤⼾输⼊的原理是,⽤⼾的输⼊先放⼊缓存,等到按下回⻋键后,按照占位符对缓存进⾏解读。 解读⽤⼾输⼊时,会从上⼀次解读遗留的第⼀个字符开始,直到读完缓存,或者遇到第⼀个不符合条件的字符为⽌。
166 2
|
3月前
|
存储 C语言
【C语言篇】scanf和printf万字超详细介绍(基本加拓展用法)(上篇)
printf 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以定制输出⽂本的格式。
77 1
|
5月前
|
存储 C语言
c语言scanf函数用法
c语言scanf函数用法
|
5月前
|
存储 C语言
C语言学习记录——联合体(共用体、特点、用法、联合体大小计算)
C语言学习记录——联合体(共用体、特点、用法、联合体大小计算)
79 2
|
5月前
|
C语言
C语言学习记录——模拟字符串相关函数(strcpy、strlen、strcat)相关知识-const、typedef
C语言学习记录——模拟字符串相关函数(strcpy、strlen、strcat)相关知识-const、typedef
32 1
|
4月前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析