- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
typede的详解
typedef的专题总结;用法一:为现有数据类型定义同义词;用法二:typedef 还可以掩饰复合类型,如指针和数组;用法三:在链表中的应用;用法四:代码简化和促进扩平台开发;C++实例;补充1:链表的三种定义结构体;第二种:
struct??student??{?????int?num?;?????char?name[8];??????char?sex;?????double?score[2];??}stu1;?? //方法二 此处定义结构体student时,顺便定义了结构体变量stu1 。
第三种:
?typedef?struct??student??{????int?num?;????char?name[8];??????char?sex;?????double?score[2];?}stu;????//方法三?注意:此处并非结构体变量,而是结构体类型student和stu;定义结构体类型 ;上面的代码包含了两个结构体变量:point_a和point_b,它们的数据类型相同,都是struct {int x; int y;}类型。这种说法可能有点别扭,习惯上说point_a和point_b都是结构体类型,为什么偏偏要说是struct {int x; int y;}类型呢?因为这种说法更加精确。比如在第一个例子中,对于“unsigned int a, b;”这条语句,我们可以说a和b都是整数类型,但更精确地说,它们应该是unsigned int类型。
既然struct {int x; int y;}是一种自定义的复杂数据类型,那么如果我们要定义多个struct {int x; int y;}类型的变量,应该如何编写代码呢?其实很简单,就当struct {int x; int y;}是一个简单数据类型就可以了:
struct?{int?x;?int?y;}?var_1;?//?定义了变量var_1 ?
struct?{int?x;?int?y;}?array_1?[10];?//?定义了数组array_1 ?
struct?{struct{int?x;?int?y;}?part1;?int?part2;}?cplx;?
上面的第三行定义了一个cplx变量,它的数据类型是一个h复杂的结构体类型,有两个成员:part1和part2。part1是struct {int x; int y;}类型的,part2是int类型的。
从上面的例子可以看出,如果在程序中需要多处定义struct {int x; int y;}类型的变量,就必须多次输入“struct {int x; int y;}”这一类型名称,况且,如果在结构体中有某个成员是struct {int x; int y;}类型的,还会使得定义变得非常繁杂而且容易出错。为了输入程序的方便,同时为了增强程序的可读性,我们可以把struct {int x; int y;}这一数据类型定义为标识符“Point”,那么上面的程序就会变得更容易理解:
;typedef?struct?{int?x;?int?y;}?Point; ?
Point?var_1;?//?定义了变量var_1 ?
Point?array_1?[10];?//?定义了数组array_1 ?
struct?{Point?part1;?int?part2;}?cplx;?//?定义了复杂类型变量cplx?
需要说明的是,我们还可以使用下面的方法来定义结构体变量:
struct?t_Point?{ ?
int?x;?int?y;};?//?注意,这里最后一个分号不能省略 ?
int?main(int?argc,?char*?argv[]) ?
{ ?
struct?t_Point?a,?b; ?
//?.?.?. ?
return?0; ?
}?
显然,这种方法没有C++ typedef更加直观(在C++中,main函数第一行的struct关键字可以省略,但在标准C中,省略该关键字会出现编译错误)。此外,对于定义链接队列中的结点,我们可以这样实现:
typedef?struct?t_node?{ ?
int?Value; ?
struct?t_node?*next; ?
}?Node; ?
当然也可以这样定义: ?
typedef?strcut?t_node?Node; ?
struct?t_node?{ ?
int?Value; ?
Node?*next; ?
};?;类是面向对象程序设计语言中引入的一种新的数据类型,既然是数据类型,就可以使用C++ typedef对其进行定义:
typedef?class?{ ?
private: ?
int?a; ?
public: ?
int?b; ?
}?M
文档评论(0)