有关C语言中typedef的用法?请求帮助!!
请看:
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,Ppp,* LinkList;
上面这段程序中
1,是不是定义了一个LNode类型的结构?
2,Ppp是不是LNode类型的变量(LNode Ppp)?还是Ppp本身也是一个结构类型(struct Ppp)?
也即:
struct Ppp
{
ElemType data;
struct Ppp *next;
}Ppp,* LinkList;
2,看不懂* LinkList在这里算什么??是LNode类型的指针(LNode *LinkList)呢?还是定义了一个和LNode拥有同样结构的指针类型?请问*LinkList的正式名称叫什么(是指针类型?是结构指针?)?
3,还是关于*LinkList,假设它是一个指针类型,那么由他定义的变量,是不是都是指针?比如:LinkList L;则说L就是一个LinkList类型的指针呢?
4,为什么要用typedef?只用LNode也可以啊!
用LNode定义指针变量:LNode* Iptr;
是不是就等同于上面的:LinkList Iptr;???
5,谢谢!需要您的解惑。
问题点数:100、回复次数:6Top
1 楼hcpp(简单的才是美的)回复于 2002-04-05 10:56:11 得分 50
1.yes
2.全为类型;
3。结构指针类型;
4。You can use typedef declarations to construct shorter or more meaningful names for types already defined by the language or for types that you have declared. Typedef names allow you to encapsulate implementation details that may change.
In contrast to the class, struct, union, and enum declarations, typedef declarations do not introduce new types — they introduce new names for existing types.
You cannot use the typdef specifier inside a function definition.
Typedef names share the name space with ordinary identifiers. Therefore, a program can have a typedef name and a local-scope identifier by the same name.
当然相等。
5。完。
Top
2 楼cwanter(亚玛逊河上的渔夫)回复于 2002-04-05 11:03:00 得分 50
我的理解:
1。是定义了LNode结构的类型,LNode是一个新的类型。不过你的结构名和类型名是重复的,最好不要这样用。
2。LinkList应该是一个指针类型。
3。LL就是一个LinkList类型的指针。
4。作用一样。
5。大家共同进步。Top
3 楼bao_zey(幽游白书)回复于 2002-04-05 11:39:01 得分 0
typedef char CHAR;
typedef CHAR *LPSTR, *PSTR;
typedef LPSTR PTSTR, LPTSTR;
MS就是这么定义的。
LPSTR就是一个指向char的指针Top
4 楼anyyan(泥)回复于 2002-04-05 11:56:58 得分 0
2)Ppp是结构变量,不是类型,你不可以再以
struct Ppp Ppp1;的形式来定义变量Ppp1,
而只能是struct LNode Ppp1;
2&3)LinkList是结构指针而非类型,所以LinkList Iptr;是不对的
只能是诸如LinkList=&Ppp使指向Ppp,然后*LinkList等价于Ppp
4)在C中(以你定义的结构类型为例),如果不用typedef,在程序里还要定义其他的该结构变量时,必须是struct LNode ppp1;(struct不可少!所以LNode* Iptr是不对的),而用了typedef,则LNode即为类型名,可直接定义其他如LNode ppp1。且一般应全部大写(LNODE)以区别变量名。
C++中则无所谓struct,不过一般结构定义放在头文件中,且申明时不知道要用多少该类型的变量,故一般都是用typedef STUDENT{……}定义结构类型。
Top
5 楼tnt_tnt(网络数据流)回复于 2002-04-05 12:39:58 得分 0
这只是对象和实例的区别像你那样定义仍然是一个对象,就好像int一样
可以用它来定义另外的实例
Top




