Rob*_*rtS 1 c performance structure recursive-datastructures
我可以在 C 中以自己的结构(递归结构)创建一个结构的实例(尽管现在我当然会这样做,因为这有点奇怪和棘手)?
喜欢:
int main(void)
{
struct type
{
char name[20];
char address[35];
struct type;
};
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当然,编译器给了我警告:
warning: declaration does not declare anything
Run Code Online (Sandbox Code Playgroud)
但是他/它让它通过并给了我一个可执行程序。
因为我想用 C++ 编译器编译相同的程序,他/它抛出了一个错误:
error: ‘main()::type::type’ has the same name as the class in which it is declared
Run Code Online (Sandbox Code Playgroud)
所以问题是针对 C,而不是针对 C++。
提前致谢。
首先,struct type;是前向声明,而不是成员变量定义。其次,不,你不能这样做,你需要使用指针。
要使用一个结构,它必须被完全定义,定义必须}在它可以使用之前结束(以结束)。否则编译器不知道结构的完整大小,也不知道它有多大以及必须如何为结构实例保留内存。
但是要创建指向结构的指针,编译器只需要知道结构标记(type在您的情况下)。那是因为在编译时就知道指针的大小。此时不需要知道完整结构本身的大小。
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |