typedef自定义数据类型
一 typedef自定义数据类型
typedef的作用是为数据类型起一个新名字。由3个部分组成,分别为关键字typedef,原数据类型,新数据类型。
标准格式如下:
typedef 原数据类型 新数据类型
一旦定义,其之后的程序中可以使用newType替换掉oldType。
eg:
#include "stdio.h" int main(void) { /* typedef 原数据类型 新数据类型*/ typedef char myChar;/* 给字符类型起一个别名 */ myChar c1 = "c";/* 使用自定义的数据类型(新数据类型)*/ printf("c1 = %c ", c1);/* printf输出函数输出 */ return 0; }运行结果:
以上语句的含义是给char取一个别名myChar,之后使用myChar代替char定义字符变量c1,c1就是字符类型。
对于数据类型的别名定义typedef可以再次定义,也是说对别名再去别名。
eg:
#include "stdio.h" int main(void) { /* typedef 原数据类型 新数据类型*/ typedef char myChar1;/* 给字符类型起一个别名myChar1 */ typedef myChar1 myChar2;/* 给别名再起一个别名myChar2 */ myChar2 c2 = "c";/* 使用自定义的数据类型(新数据类型)*/ printf("c2 = %c ", c2);/* printf输出函数输出 */ return 0; }运行结果:
第一个别名为myChar1, 第二个别名为myChar2,程序中可以使用myChar1 或 myChar2替换掉char。
二 typedef用途分析
2.1 简化复杂的类型声明
可以使用typedef将一个长长的变量名用一个简短的变量名表示。
例如, typedef unsigned long int LIU_t;
2.2 提高维护性和移植性
针对数据类型发生变化的情况,使用别名声明数据类型是最佳选择。
eg:
比如,一个学生的成绩,一开始或许都用整数表示,而后来要求有小数,我们需要满篇改类型。
#include "stdio.h" int main(void) { /* 定义4个整型变量,都是同一类型*/ int math; int engl; int english; int score_emp; /* 如果哪一天让你将这四个变量变成浮点型,我们只能一个一个修改*/ float math; float engl; float english; int score_emp; return 0; }在上面程序中,修改前为int, 修改后为float,需要都修改,如果我们换成别名表示,能够减轻维护的工作量。
eg:
#include "stdio.h" int main(void) { typedef int score_t; /* 使用别名类型定义4个整型变量,都是同一类型*/ score_t math; score_t engl; score_t english; score_t score_emp; return 0; }采用这种程序设计方式,使用别名定义数据类型,一旦需要把int修改为float,我们只需要在
自定义数据类型的地方修改为float即可,不用像第一种方法,需要每个都去指定数据类型。
2.3 数据类型集的定义
常见数据类型集:
#include "stdio.h" int main(void) { typedef char int8_t; typedef short int16_t; typedef int int32_t; typedef long long int64_t; typedef unsigned char uInt8_t; typedef unsigned short uInt16_t; typde undigned short uInt16_t; return 0; }
关于typedef的总结:
(1)typedef给数据类型起别名,可以一次或多次定义别名。
(2)常用于简化复杂类型,提高可维护性和可一移植性。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。