【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 类型的指针。

本节完

相关文章
|
2月前
|
算法 编译器 C语言
C语言猜数字小游戏(也包含python实现的用法)
本文基于VS2022、pycharm和前面的知识,写一个凭借分支与循环的小游戏,比如: 写一个猜数字游戏 游戏要求: 电脑自动生成1~100的随机数 玩家猜数字,猜数的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束 在pyhton中生成随机数是比较简单的,可以直接导入random的包,直接生成随机数,导致写猜数字小游戏变成了判读语句和循环语句嵌套就能写出来,所以我不做过多的介绍了,可以直接看后面的代码展示,想了解更多的python可看python的基础知识,这里面有我在学习python的过程中写的笔记
33 0
|
5月前
|
编译器 C语言
C语言的转义字符,转义字符的用法
C语言的转义字符,转义字符的用法
|
5月前
|
C语言
C 语言中布尔值的用法和案例解析
在编程中,您经常需要一种只能有两个值的数据类型,例如: - 是/否 - 开/关 - 真/假 为此,C语言有一个 `bool` 数据类型,称为布尔值。
115 1
|
5月前
|
存储 C语言 索引
【c语言指针详解】复杂数据结构的指针用法
【c语言指针详解】复杂数据结构的指针用法
78 0
|
5月前
|
存储 C语言
【c语言指针详解】指针的基本概念和用法
【c语言指针详解】指针的基本概念和用法
71 0
|
7月前
|
C语言
通过模拟实现计算器介绍函数指针数组和回调函数的用法【C语言/指针/进阶】
通过模拟实现计算器介绍函数指针数组和回调函数的用法【C语言/指针/进阶】
46 0
|
18天前
|
Unix Linux 编译器
C语言中EOF的用法
C语言中EOF的用法
7 0
|
2月前
|
C语言
C语言4🔥:运算符,运算符的基本用法
C语言4🔥:运算符,运算符的基本用法
34 0
|
2月前
|
程序员 C语言
在C语言中,typedef是一种用来创建新的数据类型名的关键字
在C语言中,typedef是一种用来创建新的数据类型名的关键字
10 0
|
2月前
|
C语言
C语言中关键字static的三种用法
C语言中关键字static的三种用法