【发布时间】:2021-02-26 04:34:35
【问题描述】:
我正在完成 Sam 的 21 天自学 C 课程,但我遇到了一个我无法理解的代码 sn-p。这是第 11 天的练习 6。任务是“为名为 data 的结构类型编写定义,该结构类型可以容纳最多 20 个字符的字符串。”我的解决方案是
struct data{
char a[21];
};
愚蠢地使用结构,但没关系。我的虚拟代码编译并产生 21 的预期结果
#include <stdio.h>
struct data{
char a[21];
} data_inst;
int main(void)
{
printf("%lu\n", sizeof(data_inst.a));
return 0;
}
但是,根据书上的答案是
struct data{
char a[21];
struct data *ptr;
};
我对正确答案的解释是ptr 是指向类型data 的指针。但ptr 也是data 的成员。这条附加线有什么意义?包含指向自身的指针的结构有什么好处?还是我只是在这里完全遗漏了什么?
【问题讨论】:
-
也许看看接下来几天的活动?这看起来像是用于构建链表的设置。
-
也许您忽略了更多任务? “正确”答案适用于链表中的节点
-
没有任何意义的附加行除非这个结构将在某个时间用于动态托管数据结构(如链表)——不久的将来。
-
是的,所以我也怀疑 - 你确定你没有错过问题中的任何关键内容吗?
-
请不要将解决方案编辑到答案中。而是接受已发布的答案之一,或者您可以编写自己的答案
标签: c