牛骨文教育服务平台(让学习变的简单)
博文笔记

typedef自定义数据类型

创建时间:2016-09-26 投稿人: 浏览次数:3175

一 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)常用于简化复杂类型,提高可维护性和可一移植性。

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。