为什么不允许在其元素中使用结构变量本身
Why is using the structure variable itself in its element not allowed?
为什么不允许声明具有自己的标识符的结构作为其元素? 其中作为自引用结构,由带有指针符号的结构的同一变量声明!
这是我尝试的代码:
#include<stdio.h>
#include<conio.h>
struct am
{
int a;
struct am k; // this reported an error
};
这段代码向我报告了一个错误,当我使用它作为指针时,它接受了它,我搜索了网络,我知道它被称为自引用结构
#include<stdio.h>
#include<conio.h>
struct ko
{
int a;
struct ko * op; // this was allowed by my compiler
};
这个结构有效,请简要介绍我!
我使用的是Borland International Inc.的TurboC ++版本3.0。
一个对象不能包含与自身类型相同的对象;这是一个逻辑上的不可能,因为它需要比它自己大。
正如您所说,它可以包含指针或引用,但不包含对象。
我使用的是Borland International Inc.的TurboC ++版本3.0。
我不知道你为什么要使用一个二十年前的编译器,以及一种现在很少有人记得的古老的C++方言。但这在当时和现在一样是不可能的。
两个原因:
-
struct am
类型直到结构定义的结束}
才完成;当你尝试将k
声明为struct am
的实例时,编译器仍然不知道struct am
需要多大。
结构不能包含自身的实例,因为该成员还必须包含自身的一个实例, 该实例将包含自身的一个实例,ad inifinitum;生成的对象将无限大。
结构可以包含指向相同类型的实例的指针,因为 a) 可以创建指向不完整类型的指针,以及 b) 所有结构指针类型具有相同的大小和表示形式。
相关文章:
- 在类构造函数中使用结构变量
- 在类构造函数中定义结构变量的参数
- 为什么我们再次从结构对象创建结构变量?
- 如何从其他结构访问受保护的结构变量
- 指向结构变量的指针未保存到eeprom
- 为什么我的程序没有更改结构变量中的值?
- 在 CPP 中初始化 typedef 结构变量
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- 有没有办法初始化不涉及编写构造函数的新结构变量?
- 结构变量查询
- 在结构声明的分号之前声明的结构变量是否为全局变量
- C++ 如何访问指针的结构变量
- 使用指向结构变量成员的指针访问该结构的成员的地址
- 为什么在 sizeof() 函数中与 * 运算符一起使用和不使用 * 运算符时,指向结构变量的指针大小会有所不同?
- 如何在类别内的类中访问类中的结构变量
- 尝试使用文本文件初始化多个结构变量
- 从类对象到结构变量的 memcpy
- C++结构变量初始化时出现问题
- 如何在 C++ 中使用带有类/结构变量的列表
- 动态数组添加元素而不创建结构变量/对象