主题:[讨论]请教 typedef 的使用方法
			 nana_aoe
				 [专家分:60]  发布于 2010-04-24 17:06:00
 nana_aoe
				 [专家分:60]  发布于 2010-04-24 17:06:00							
			typedef是否就是一个定义近义词的意思?
如 typedef enum Boolean{FALSE,TURE}Boolean  是否可以认为是
  Boolean 即 enum Boolean{FLASE,TURE} a;
这样认为对吗?
有段代码是这样的
typedef enum state {FLASE,TURE} State;
typedef State Grid[MAXROW+2][MAXCOL+2];
这两句怎么解?
			最后更新于:2010-04-24 17:18:00
			
					 
		
			
回复列表 (共5个回复)
		
								
				沙发
				
					 雪光风剑 [专家分:27190]  发布于 2010-04-24 18:05:00
雪光风剑 [专家分:27190]  发布于 2010-04-24 18:05:00				
				你的看法不太正确。typedef定义的不是近义词而是同义词,也就是说typedef的参数2是类型名而不是变量名
在你给出的范例typedef里
typedef enum Boolean{FALSE,TURE} Boolean;
那么,在后面的变量声明中,Boolean成为了一种新的类型,是取值范围为FALSE,TURE的枚举类型
你的代码段中,第二句是对新定义好的同义词进行了第二次同义词定义,这次定义的是一个二维数组类型
你给出的代码段执行后,如果声明Grid a,那么a是一个[MAXROW+2][MAXCOL+2]的一个二维数组,每个元素是取值范围为FALSE,TURE的枚举类型
明白了吗?
							 
						
				板凳
				
					 nana_aoe [专家分:60]  发布于 2010-04-24 19:20:00
nana_aoe [专家分:60]  发布于 2010-04-24 19:20:00				
				typedef enum state {FLASE,TURE} State;
typedef State Grid[MAXROW+2][MAXCOL+2];
是说两次同义词定义?
那我这样定义是否可以行的通呢?
typedef enum state {FLASE,TURE}  Grid[MAXROW+2][MAXCOL+2];//也就是说两句和成一句
前面对Grid a;声明过了。
							 
						
				3 楼
				
					 雪光风剑 [专家分:27190]  发布于 2010-04-24 21:46:00
雪光风剑 [专家分:27190]  发布于 2010-04-24 21:46:00				
				原则上讲,这样写没有错,只不过当你需要单独的State类型(也就是枚举类型)的时候又要重写一次了。起别名实际上是一种封装,要考虑逐层封装的问题
							 
						
				4 楼
				
					 强强 [专家分:4740]  发布于 2010-04-24 22:03:00
强强 [专家分:4740]  发布于 2010-04-24 22:03:00				
				并非近义词的意思TYPEDEF=TYPE DEFINE即:定义一个类型
TYPE是一个类型,一个数据的描述
例如:"肥头大耳长鼻子"是一个自定义的类型
TYPEDEF Pigtype "肥头大耳长鼻子"
那么Pigtype就是一个描述猪的类型
Pigtype a,b,c;中a,b,c就是一头头猪
TYPEDEF让编程的人可以用自己定义的类型来声明变量
							 
						
				5 楼
				
					 雪光风剑 [专家分:27190]  发布于 2010-04-24 23:09:00
雪光风剑 [专家分:27190]  发布于 2010-04-24 23:09:00				
				强强……你说反了……
typedef起类型别名的用法是
typedef 类型1 类型2,是给类型1起别名为类型2……
							 
									
			
我来回复