【发布时间】:2019-12-26 10:23:18
【问题描述】:
我可以在 C 中以它自己的结构(递归结构)创建一个结构的实例吗(尽管我现在当然会这样做,因为这有点奇怪和棘手)?
喜欢:
int main(void)
{
struct type
{
char name[20];
char address[35];
struct type;
};
return 0;
}
当然,编译器给了我警告:
warning: declaration does not declare anything
但他/它让它通过并给了我一个可执行程序。
因为我想用 C++ 编译器编译同一个程序,他/它抛出了一个错误:
error: ‘main()::type::type’ has the same name as the class in which it is declared
所以问题是针对 C,而不是针对 C++。
- 我可以这样做,而不会对我的程序造成任何更深层次的问题吗?
- 我是否可能会使用这种技术进入未定义或未指定的行为?
- 是否有任何理由不这样做(例如编译/性能问题)?
提前致谢。
【问题讨论】:
-
假设您的尝试是可行的,您希望该结构的大小是多少?
-
你试试自己计算
type的大小如何? -
@Yunnosch 我没想到尺寸这么重要。但目前,让我们假设提供的结构的大小。
-
对于每层大约 55 个字节且层数不定且无限的结构,您会假设什么大小?
-
如何访问最深层次的
name成员? (这是一个技巧题,你首先要确定最深的层次。可以吗?)
标签: c performance structure recursive-datastructures