菜鸟之菜菜问题系列------ 关于typedef struct的问题,请大家帮帮忙

webnumen 2004-04-07 11:59:12
最近在书上看见这么一段定义
typedef struct
{
char name[8]
} student;
student liuqi;

但最近我在一些csdn上面却看见这么一段定义:
typedef struct lnode {
int data;
struct lnode* next;
}*linklist;

linklist s,p1

这上面两段定义中,其实这两段的区别就是一个struct后面加lnode,一个没加,请问有加lnode和没加lnode有什么区别呢??
...全文
120 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
antijpn 2004-04-08
这里的typedef定义的是lnode*的别名,这个别名是linklist,如此而已

而前面的是定义结构体
{char name[8]}
的别名为student

其实还是typedef的基本语法问题
typedef VarType VarName
VarType是变量的类型,VarName是你给它定义的别名
回复
zhangfjj 2004-04-08
前面定义的是结构体类型student
后面定义的是结构体类型的指针linklist
---------
应该说别名
回复
zhangfjj 2004-04-08
还要注意的是
前面定义的是结构体类型student
后面定义的是结构体类型的指针linklist
回复
zhangfjj 2004-04-08
typedef struct
{
char name[8]
} student;
student liuqi;
--------这里没有给结构体类型,
已typedef了一个别名,用起来方便了,没有必要
而后面给了一个结构体类型名称
typedef struct lnode//就是这里
{
int data;
struct lnode* next;
}*linklist;
是因为结构体类型定义中要用到该结构体类型的指针(但不能是结构体类型的成员,这样会出现嵌套定义),而别名还没有出现(在下面),所以需要在前面加上Lnode
回复
milefo 2004-04-08
//定义一个结构体类型
struct A
{
...
};
A a_str; // 该类型的一个实例;
当然如果这样定义a_str也一样!
struct
{ ...
}a_str;//这里的struct tag 省了,要用同样结构时麻烦些!再来一遍!

上面的写法可以等于
struct A
{
...
}a_str;

如果给A起个别名.则可以
typedef A STR_A;
这就相当于
typedef struct A
{
...
}STR_A;
当然也可以省了tag A,如果struct里嵌套最好不省!

如此而已!

回复
相关推荐
发帖
C语言
创建于2007-09-28

6.4w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-04-07 11:59
社区公告
暂无公告