菜鸟之菜菜问题系列------ 关于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有什么区别呢??
...全文
217 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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里嵌套最好不省!

如此而已!

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧