当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > typedef分析理解

typedef分析理解 时间:2018-09-28      来源:未知

typedef是C语言中一个很好用的工具,大量存在于已有代码中。

typedef 拆开 即为:type define,翻译过来是类型定义,一般用于为类型起别名。

typedef定义的一般形式为: typedef 原类型名 新类型名 新类型名一般用大写表示,以便于区别。

例1:typdefe int integer

Typedef为类型起别名总共分两步:

第一步:声明一个变量 int integer;

第二步:前边加个typedef typedef int integer;

大家都知道第一步的语句声明了一个变量integer,其类型是整型;如果在这个声明的前面加上一个typedef后,整个语义又会是如何改变的呢?这以后integer是int类型的别名,所有用到int的地方都可以使用integer来替换。

如:integer a,b; 它等效于: int a,b; //a,b都是整型的变量

说白了,integer本来是一个变量的身份,前边加个typedef后,摇身一变,变成了integer的类型的别名,具有了定义变量的权利。

typedef为类型起别名,别名一般用大写,前边小写是为了易理解。

注意:这里要区分typedef 与define,有这样一道常考的笔试题:

typedef char *CHAR与#define PCHAR char* 二者在功能上有什么不同?

程序执行结果为:

分析:define为机械替换,CHAR a,b等价于char *a,b;即 char*a;char b;

此时a是char*类型,b是char类型

Typedef是为类型起别名,PCHAR c,d 等价于char *c;char *d;此时c和d都是char*类型。

例2:为结构体取别名

以前的代码中,声明结果体新对象时,必须带上struct 结构体名,如:

struct stu

{

char name[20];

int age;

char sex;

};

Struct stu s1,s2;//s1,s2皆为结构体对象

使用typedef为结构体取别名:

typedef struct stu

{

char name[20];

int age;

char sex;

} STU;

定义STU表示struct stu的结构类型,然后可用STU来说明结构变量: STU s1,s2; 这里的STU s1,s2等价于上边的struct stu s1,s2; 代码更加简洁。

例3:typedef int AR[5]

AR a;

AR 和a分别代表什么?根据例1所述,去掉typedef ,AR是含有5个整型元素的数组,加上typedef后,AR是一个类型名,代表很有5个整型元素的数组类型,AR定义的a,那么a就是一个含有5个整型元素的数组。

程序运行的结果为:

例4:是为函数指针起别名

typedef int (*PFUN)(int);

PFUN pf;

根据以上推理:

PFUN 是函数指针类型,该指针类型指向返回值类型为int,参数类型为int的函数, 用PFUN这个类型去定义变量pf,此时的pf是函数指针变量,这个变量是指向返回值为int,形参类型为int的一类函数。

程序执行结果:

上一篇:Anddroid App和Java Web服务器间数据交互 之Android App搭建

下一篇:理解C语言的声明

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部