typedef常见用途


我们都知道typedef是类型重定义,既然是重定义就不可能出现新的数据类型,只是将已有的数据类型进行换个名字而已,但是这有什么用呢?可能我们学的时候,给的例子都是:typedef int INT; 然后再用INT去定义一些变量,例如:INT a;

这个就等于int a; 我们当时感觉不出来有什么用,当学到结构体的时候,可能觉得会减少数据类型的写法,像struct student这样一个结构体定义变量的时候如果不用typedef就只能struct student(当然这是在C语言中,在C++中可以省略掉struct直接写student),这样感觉很麻烦,所以才想到用typedef,但是这是他的用法之一,却不是为唯一的用法。

typedef的用法主要我总结了一下三点:

用法一:可以减少代码的书写量

就像我们经常能考虑到的,结构体这样“新的”数据类型,用typedef可以简化,而且不容易出错.例如:

struct student{

  int data;

  char name[10];

}; 当我们定义学生结构体的时候要这么定义struct student s1,s2,s3; 如果想定义结构体指针,我们可以这么定义,struct student *ps1, ps2; 显然ps2不是指针类型,但是好多初学者对指针不熟悉,所以容易出错,但是当我们用typedef的时候,就不会出现这样的错误了,

typedef struct student{

  int data;

  char name[10];

}stu, *pstu; 我们定义的时候可以这么定义stu s1, s2, s3; 定义结构体指针的时候,可以这么定义,pstu ps1, ps2; 这样ps1, ps2都是指针类型的变量 这是typedef的用法之一,也是比较常用的。

用法二:可以实现代码的复用性和可扩展性

如果一段代码没有扩展性和复用性,那么这段代码就不能算得上是一段特别规范的代码,就像我们为了实现代码的复用性,提高程序可读性的时候,用函数一样,提高代码的复用性和可扩展性是作为软件开发者必备的本领。一段好的代码,如果在别的项目中引用的话,如果功能类似,基本上改不了几行,这就是规范性的重要性(这里先不谈规范性,但是这个typedef的用法也涉及规范性,嘿嘿,所以规范是避免不了的)。就这么来说吧,假如我们定义了一个结构体

struct student{

  int score;

  char name[10];

};我们想把成绩改成double类型的,应为int的精度太低了,但是下面用到的地方可能都要改掉,但是,我们要是用typedef一下, 问题就变得简单多了,

typedef int typeitem;

struct student{

  typeitem score;

  char name[10];

};这样直接改typedef就行了,其他的代码根本不用动,这就是分层的原因,我们只改变最底层的,上层的东西根本不用变(就像在链表中,我们可以把它分为三层,纯数据层、节点层、head指针层,也就是整条链)这样分层处理问题会变得简单得多。还有就是平台不同可以兼容,就像有的平台不支持long double类型,但是你如果定义了long double 直接不能用,但是如果这么 typedef long double typeitem; 直接改成可以支持的类型就行啦,根本不用那么麻烦改下面的代码,这也是比较重要的用途。


shijiebei 365bet manbetx 188bet xinshui caipiao 95zz tongbaoyule beplay 88bifa 18luck betway bwin hg0088 aomenjinshayulecheng ca88 shenbotaiyangcheng vwin w88 weide