c语言中的自定义数据类型,C语言自定义数据类型名称-typedef

「今天是学习C语言第 25 天」

当你选择了一种语言,意味着你还选择了一组技术、一个社区。——Joshua Bloch

# 自定义类型名称

C语言不仅内置int,float,char,函数,指针等多种数据类型,也提供typedef关键字用于创建新的数据类型名称,方便自定义数据类型。

自定义数据类型的使用和内置数据类型一样,无任何区别。

注:本质上typedef没有创建新的类型,只是增加了新的类型名称。

# typedef使用语法

语法:

typedef  已有类型名称  新类型名称

例如:

typedef int MyInterger;

MyInterger i,j; // 与int i,j 等价

// 自定义char *类型名Mystring

typedef char *MyString;

char *s;

MyString s;  // 等价上面

# typedef 简化结构类型应用

使用typedef可以简化结构类型名称,起名也可以增加代码可读性。

// 自定义结构类型名称

typedef struct node

{

.....

}MyNode;

struct node node1;

MyNode node1;  // 等价上面

// 自定义结构指针类型

typedef struct node *NodePtr;

struct node *p;

NodePtr p;  // 等价上面

# 自定义函数类型指针名称

typedef定义一个指向一类函数的指针。

例如:

typedef int (*FunPtr)(int , int );

FunPrt f1,f2;

说明:

1.FunPtr是函数指针类型,该函数类型是返回值为int,参数为两个int型的函数;

2.f1,f2是两个函数指针类型变量。

# typedef的作用

1.简化代码,增强可读性;

2.将程序机器相关的内置类型参数化,提高可移植性,例如不同平台上的内置数据类型是不一样的,程序移植到不同平台时,只需要typedef定义即可,其它位置无需一一修改。

例如:

typedef int MyInteger; 如果A平台不支持int型,只支持long类型,我们可以简单修改定义 typedef long MyInterger; 即可,程序代码无需修改。

# typedef vs #define

#define基本上可以实现typedef的类似功能,为各种数据类型自定义名称。

例如:

#define MyInteger int

#define MyString  char *

区别:

1.#define是预处理指令,预处理器处理,typedef是关键字由编译器编译处理。

2.typedef是完整的自定义类型名称,声明变量保证变量类型一致,#define只是简单的文本替换,在不同位置会产生不同的类型。

例如:

#define MyString  char *

MyString p1,p2;

宏替换以后是 char * p1, p2; 其中p1是字符指针类型,p2是字符类型。

3.typedef 自定义类型后,无法添加unsigned,signed等类型区分符,#define可以。

4.#define 可以为类型关键字、字符串、整数等几乎任何类型自定义别名,宏替换。

---------- End ----------

往期精彩推荐:

「喜欢C请赏个 赞    点击右下角 在看」

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值