C语言结构体的问题

zhangweiJQK 2012-11-30 05:02:19
定义一个结构体如下:
typedef struct Lnode
{
int data;
struct Lnode *next
}LinkList;

问题是:Lnode可以单独用吗?比方说:struct Lnode Linklist1 或者LinkList LinkList2这个应该都没问题
但是对于下述语句我就不大明白了:LinkList *L;
L=(LinkList*)malloc(sizeof(Lnode));
这里的Lnode可以单独用吗?
按照我的理解不是应该是“ L=(LinkList*)malloc(sizeof(structLnode));”吗?

请各位指导迷津
...全文
208 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
sangml 2012-11-30
  • 打赏
  • 举报
回复
我试了一下,在vc中 L=(LinkList*)malloc(sizeof(Lnode)); 这样的语句确实是通不过。 但是我在单纯的C编辑器中试了一下,可以。我用的还是TC试的。 也许是像10楼说的那样。
常如意 2012-11-30
  • 打赏
  • 举报
回复
Lnode是一个变量,可以引用,LinkList是一个类型名,可以直接定义变量
黑压压AiKoder 2012-11-30
  • 打赏
  • 举报
回复
引用 10 楼 baichi4141 的回复:
引用 9 楼 areswhy 的回复: L=(LinkList*)malloc(sizeof(Lnode)); 能编通过吗? 很多用VC的新手,根本就分不清C、C++和VC 最坑人的是,其中有一些,直到出版各种“XX天精通VC++”的时候,也还没分清
呵呵
baichi4141 2012-11-30
  • 打赏
  • 举报
回复
引用 9 楼 areswhy 的回复:
L=(LinkList*)malloc(sizeof(Lnode)); 能编通过吗?
很多用VC的新手,根本就分不清C、C++和VC 最坑人的是,其中有一些,直到出版各种“XX天精通VC++”的时候,也还没分清
黑压压AiKoder 2012-11-30
  • 打赏
  • 举报
回复
L=(LinkList*)malloc(sizeof(Lnode)); 能编通过吗?
zhangweiJQK 2012-11-30
  • 打赏
  • 举报
回复
引用 4 楼 baichi4141 的回复:
引用 3 楼 zhangweiJQK 的回复:引用 2 楼 baichi4141 的回复:C语言不能省略,C++可以省略 那为什么出现了 L=(LinkList*)malloc(sizeof(Lnode));呢? 此为C代码 难道是错误的?还是有其他原因 C++语法全面兼容C语法,你怎么知道这个代码是C代码还是C++代码? 区别在于编译器,你用的是C编译器还……
说的在理! 此为一本C语言书上代码 看来书本内容欠妥 欢迎其他高手批评指正!!
七擒关羽 2012-11-30
  • 打赏
  • 举报
回复
好吧,手敲对这个限制的很不感冒 struct X *L=(truct X *)malloc(sizeof(struct X)); 更正如下: struct X *L=(struct X *)malloc(sizeof(struct X));
七擒关羽 2012-11-30
  • 打赏
  • 举报
回复
引用 2 楼 baichi4141 的回复:
C语言不能省略,C++可以省略
我讲稍微详细点。 1、在C中,struct X,X只是类型名,但可能出现重名的,例如

struct X
{
//.....
};
void fun()
{
    int X;
    struct X *L=(truct X *)malloc(sizeof(struct X));
    int len = sizeof(X);
}
2、在C++中,struct被默认为class的一种类型
  • 打赏
  • 举报
回复
没错误啊,LinkList与Lnode其实是一个类型,不同名字而已。 L=(Lnode*)malloc(sizeof(Lnode)); 跟这个一样,你在把Lnode看做int类型,这样可以理解了吧。
baichi4141 2012-11-30
  • 打赏
  • 举报
回复
引用 3 楼 zhangweiJQK 的回复:
引用 2 楼 baichi4141 的回复:C语言不能省略,C++可以省略 那为什么出现了 L=(LinkList*)malloc(sizeof(Lnode));呢? 此为C代码 难道是错误的?还是有其他原因
C++语法全面兼容C语法,你怎么知道这个代码是C代码还是C++代码? 区别在于编译器,你用的是C编译器还是C++编译器?
zhangweiJQK 2012-11-30
  • 打赏
  • 举报
回复
引用 2 楼 baichi4141 的回复:
C语言不能省略,C++可以省略
那为什么出现了 L=(LinkList*)malloc(sizeof(Lnode));呢? 此为C代码 难道是错误的?还是有其他原因
baichi4141 2012-11-30
  • 打赏
  • 举报
回复
C语言不能省略,C++可以省略
Zoelov 2012-11-30
  • 打赏
  • 举报
回复
可以省略struct

69,371

社区成员

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

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