有关c51中typedef struct的问题

kailern   2009-10-11 12:06 楼主
我在看一段程序时,看到这样的结构体:
typedef  struct  entry_str{
         struct  entry_str  xdata  *next;
         char text[33];
         }entry;
我想请教的是:1、到底entry_str和entry哪个是typedef定义的类型名?我记得typedef不可以定义变量,那entry是什么? entry_str又是什么?
              2、“struct  entry_str  xdata  *next”中“struct  entry_str”怎么又出现在结构体成员中?

回复评论 (8)

这是C语言的基本语法
entry 等于 struct  entry_str

可以那样定义的
点赞  2009-10-11 12:21
typedef是用户数据库类型定义关键字

它允许程序员自己定义一种新的数据类型

这个主要用在增加代码的可读性和编码方便上

typedef  struct  entry_str{
        struct  entry_str  xdata  *next;
        char text[33];
        }entry;
可以等同于:
struct  entry_str{
        struct  entry_str  xdata  *next;
        char text[33];
        };

typedef  struct  entry_str entry;

entry_str又是什么?
这个是结构类型的名字,但是,你在定义新的变量时,必须告诉编译器它是一个结构,所以就有了":
struct  entry_str +变量名的语法

我记得typedef不可以定义变量,那entry是什么?
entry是用户定义的数据类型,通过typedef,编译器已经知道entry 就是struct  entry_str

2、“struct  entry_str  xdata  *next”中“struct  entry_str”怎么又出现在结构体成员中?
编码的家伙可能吃饱了撑着了,故意胡弄你.要么就是它忘了自己typedef过...
这个也有可能属于在设计的时候,文档不全造成编码人员的误解
点赞  2009-10-11 13:02
lz的C语言基础需要加强哦
点赞  2009-10-11 14:48
把《c专家编程》的第三章看明白就搞定了
点赞  2009-10-11 18:54
一直不明白定义结构时同时用typedef定义别名有什么意义
点赞  2009-10-12 10:29
看多了就习惯了。
点赞  2009-10-12 20:31
2、“struct  entry_str  xdata  *next”中“struct  entry_str”怎么又出现在结构体成员中?

---------------
这是个指针啊,典型的链结构............
点赞  2009-10-12 21:17
ding
点赞  2009-10-12 22:52
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复