标题:静态双亲链表类型定义的初级问题
只看楼主
sdytss
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-7-1
 问题点数:0 回复次数:1 
静态双亲链表类型定义的初级问题
静态双亲链表的类型定义如下:

#define size 结点数
  typedef struct
  { datatype data; / * 数据域 * /
   int parent; / *双亲域(静态指针域) * /
  }node;
  typedef node statlist[size]; / *静态双亲链表 */

--------------------------------
问题:

为什么这句typedef node statlist[size];会这么写?typedef不是用户自定义类型吗,这样不是把statlist[size]定义成了一种数据类型了吗? 难道不是应该这样写吗?:node statlist[size];将statlist[size]定义成node型数组。

小弟在准备十月份的自学考试,因为是自学,举步维艰,谢谢大家!


搜索更多相关主题的帖子: 自学考试 parent 
2012-07-01 20:20
westfall999
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:40
专家分:101
注 册:2012-7-22
得分:0 
typedef关键字的一些用法:
typedef除了可以重定义一般的内部类型(如char、int、float、double)外,还可以重定义复杂构造类型(如数组、结构体、共用体等)。
对于数组,如因为在C语言中数组的定义形式为:type arrayname[len];由此可知数组必须要有类型和长度。(C语言中数组的长度定义时不能省)
因为typedef格式为:typedef 旧类型 新类型,如果把typedef定义成typedef int a[10] array;这样的话,系统分不清旧类型与新类型,因为
旧类型int a[10]之间有空格。因此只能这样定义typedef int a[10]; ,旧类型为int ,新类型为a[10];
以后使用数组变量名a就可以造就任意多个数组,如a array1;a array2等价于int array1[10],int array2[10];
不使用a[10] array;的形式是因为数组的定义形式需要[],C语言中长度不能省。typedef int a[10];说明对一个int型有10长度的数组进行了类型重定义。
typedef node statlist[size];相当于typedef (结构体类型 数组);
纯属个人理解~~
2012-07-23 19:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-372608-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.677249 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved