gpt4 book ai didi

c - C :Why this does not show incompatible type for fied fe; 中的结构

转载 作者:太空宇宙 更新时间:2023-11-04 07:10:55 25 4
gpt4 key购买 nike

有人可以解释一下下面给出的 c 结构的前 2 种情况吗?以及它是如何工作的?

案例:1

struct vertex{
int info;
struct vertex * nextertex;
struct edge *firstEdge;}; //why no error as incompatible type for field firstEdge?

这段代码不会产生错误!我们在整个代码中没有struct edge!!

案例:2

struct vertex{
int info;
struct vertex * nextertex;
struct edge *firstEdge;};

struct edge{
struct vertex * destVertex;
struct edge *nextEdge;};

与案例 1 相同,不同之处在于我们在结构顶点定义之后有结构边缘。没有错误!

案例:3

struct vertex{
int info;
struct vertex * nextVertex;
struct edge firstEdge;};

struct edge{
struct vertex * destVertex;
struct edge *nextEdge;};

这似乎更明显。将错误作为结构 v 中字段 firstEdge 的不兼容类型抛出。

最佳答案

C 有完整不完整 类型的概念。

C 表示不完整类型缺少足够的信息来确定该类型对象的大小,而完整类型提供足够的信息

C 不允许您声明具有不完整类型成员的结构类型,但允许您声明具有指向不完整类型的类型指针成员的结构类型。在后一种情况下,如果类型尚未完成(通过声明结构类型及其稍后在同一范围内定义的内容,则尝试取消引用指向不完整类型的指针是无效的/em>).

关于c - C :Why this does not show incompatible type for fied fe; 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28517846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com