请问1下定义struct或class时的一个问题。

lbeast 2005-12-21 05:11:24
当定义struct的时候
struct Lnode
{
char data;
Lnode next; //这里报错
};
Lnode next不可以用,报错Lnode正在被定义
但改为Lnode *next就可以了。
为什么呢??

class中定义也一样。
...全文
149 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocai0001 2005-12-21
  • 打赏
  • 举报
回复
>> 钱能的那本红皮的c++的书里有讲啊。结构中成员不能重复包含自身的。但是可以包含指向相同结构的指针。

设想, 如果允许结构体自己包含自身的定义, 那会出现什么样的结果呢?

struct Lnode
{
char data;
Lnode next; //这里报错
};
如果这样的定义是允许的话
那么sizeof(struct Lnode) = ?
watermelontx 2005-12-21
  • 打赏
  • 举报
回复
你定义一个变量时,要为其分配内存空间,而该类(结构)定义还没有结束
所以无法确定其大小,也就无法分配内存空间,所以出错
而指针不同,大小固定,所以可以啊
zhousqy 2005-12-21
  • 打赏
  • 举报
回复
只可以包含指向相同结构的指针。
sinall 2005-12-21
  • 打赏
  • 举报
回复
学习,×尽人亡。
braveman82 2005-12-21
  • 打赏
  • 举报
回复
编译器不知道要给这个结构体分配多大的空间
qfeng_zhao 2005-12-21
  • 打赏
  • 举报
回复
呵呵,说的不是很正确
应该是确定成员变量所占的内存空间大小
goodluckyxl 2005-12-21
  • 打赏
  • 举报
回复
Lnode next; //这里报错
还没有看到Lnode的定义 怎么定义他呢?
iamcaicainiao 2005-12-21
  • 打赏
  • 举报
回复
总之,就是规定了阿。否则,自己包含自己,不断的包含自己,不就是死循环么。包含指针,则可以把相同的结构变量连接起来,诸如链表等数据结构。
qfeng_zhao 2005-12-21
  • 打赏
  • 举报
回复
你定义一个变量时,要为其分配内存空间,而该类(结构)定义还没有结束
所以无法确定其大小,也就无法分配内存空间,所以出错
而指针不同,大小固定,所以可以啊
其实引用也可以的
iamcaicainiao 2005-12-21
  • 打赏
  • 举报
回复
呵呵,这是规定阿。钱能的那本红皮的c++的书里有讲啊。结构中成员不能重复包含自身的。但是可以包含指向相同结构的指针。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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