typedef

本文详细解释了typedef在C语言中的作用,即如何对类型进行重新定义以提高程序的可维护性。特别指出数组指针和函数指针的typedef重定义方式,并强调了typedef与宏定义(如define)的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

typedef

typedef ,type表示类型, def就是define, 定义的意思。所以,根据名字我们就可以知道typedef就是类型定义的意思。可以对一个类型进行重新定义。

一般对一个类型重新定义都是这种形式: typedef 类型  重定义

如:

这种对类型重定义的方法的好处就是万一以后想要改数据类型, 可以直接在typedef处直接将int改为想要的数据类型,比如我想要将int类型,改为char类型 ,只需要将typedef处改掉就好:

这样当想要修改一些数据类型时既不容易遗漏, 也不容易出错。增加了程序的可维护性。

这里有一些对数据类型进行重新定义的例子。

 

 上面三种类型是比较常见l的typedef例子。我们可以看到第三组区别于第一二组。

所以这里需要注意的是, 数组指针和函数指针的重新定义不是一般的:typedef 类型 重定义

而是应该将类型的重新定义写在里面

 比如对数组指针进行重新定义, 首先一个数组指针的类型, 什么是他的类型标志。

假如定义一个数组指针int (*p) [5] 我们要知道, int(*)[   ]  就是这个数组指针的类型。 所以对这个类型进行重新就是:

typedef  int (*  重定义)[5]

重定义部分是我们重定义后的名字, 假如我要重定义为P_int_5, 那么就可以写成:

typedef  int (* P_int_5)[5] 

这样就是一个完整的定义过程。P_int_ 5就是我们要的类型名。

函数指针也是一样的道理,假如想要对int(*) (int, int)进行重新定义,并且重定义后的类型名叫:P_int_int_int,  就要将重定义写在括号里面, 即:

typedef (*  P_int_int_int)(int, int)

其实这里还有一点需要强调, define 和typedef是不一样的。 define是一个宏。使用宏定义数据类型, 并不是创建了一个类型名, 而是一种“代换”, 比如我这里有一串代码:

我们可以看到, 这里的pd并不是int * 类型, 而是一个int类型, 那么为什么会是这样呢, 因为宏会在预处理阶段将定义重现转化为原来的东西。什么意思?就是这样:

在预处理阶段,P_INT被转换成立int*, 但是我们直到, 这个int* 是不能作用于pd的, 想要令pd也是指针必须在pd前面加*。

而P_int就不会发生这种情况, 因为typedef重定义int* 后, 已经将P_int类型作为新的一种类型, 这个类型的类型名是P_int,类型和int* 一样。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值