如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
typedef由于对typedef理解不够,因此从网上摘录了一些资料,整理如下:C/C++中typedefstruct和struct的用法struct_x1{...}x1;和typedefstruct_x2{...}x2;有什么不同?其实,前者是定义了类_x1和_x1的对象实例x1,后者是定义了类_x2和_x2的类别名x2,所以它们在使用过程中是有取别的.请看实例1.[知识点]结构也是一种数据类型,可以使用结构变量,因此,象其它类型的变量一样,在使用结构变量时要先对其定义。定义结构变量的一般格式为:struct结构名{类型变量名;类型变量名;...}结构变量;结构名是结构的标识符不是变量名。另一种常用格式为:typedefstruct结构名{类型变量名;类型变量名;...}结构别名;另外注意:在C中,struct不能包含函数。在C++中,对struct进行了扩展,可以包含函数。======================================================================实例1:struct.cpp#include<iostream>usingnamespacestd;typedefstruct_point{intx;inty;}point;//定义类,给类一个别名struct_hello{intx,y;}hello;//同时定义类和对象intmain(){pointpt1;pt1.x=2;pt1.y=5;cout<<"ptpt1.x="<<pt1.x<<"pt.y="<<pt1.y<<endl;//hellopt2;//pt2.x=8;//pt2.y=10;//cout<<"pt2pt2.x="<<pt2.x<<"pt2.y="<<pt2.y<<endl;//上面的hellopt2;这一行编译将不能通过.为什么?//因为hello是被定义了的对象实例了.//正确做法如下:用hello.x和hello.yhello.x=8;hello.y=10;cout<<"hellohello.x="<<hello.x<<"hello.y="<<hello.y<<endl;return0;}typedefstruct与struct的区别1.基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2.typedef&结构的问题当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?请你先猜想一下,然后看下文说明:typedefstructtagNode{char*pItem;pNodepNext;}*pNode;答案与分析:1、typedef的最简单使用typedeflongbyte_4;给已知数据类型long起个新名字,叫byte_4。2、typedef与结构结合使用typedefstructtagMyStruct{intiNum;longlLength;}MyStruct;这语句实际上完成两个操作:1)定义一个新的结构类型structtagMyStruct{intiNum;longlLength;};分析:tagMyStruct称为“tag”,即“标签”,实际上是一个临时名字,struct关键字和tagMyStruct一起,构成了这个结构类型,不论是否有typedef,这个结构都存在。我们可以用structtagMyStructvarName来定义变量,但要注意,使用tagMyStructvarName来定义变量是不对的,因为struct和tagMyStruct合在一起才能表示一个结构类型。2)typedef为这个新的结构起了一个名字,叫MyStruct。typedefstructtagMyStructMyStruct;因此,MyStruct实际上相当于structtagMyStruct,我们可以使用MyStructvarName来定义变量。答案与分析C语言当然允许在结构中包含指向它自己的指针,我们可以在建立链表等数据结构的实现上看到无数这样的例子,上述代码的根本问题在于typedef的应用。根据我们上面的阐述可以知道:新结构建立的过程中遇到了pNext域的