如何在结构中创建十字指针

问题描述:

所以,这里是我的问题,我想创建一个图形数据库。我的概念想法是一个节点(它将在代码中是“Vrtc”类型的),它将会和(int)id,一个(char *)字符串(称为“str”)和一个列表(l_est)出。 列表将包含一个指针“数组”的节点,节点列表中的量,和节点的最大数量。如何在结构中创建十字指针

typedef struct Vrtc 
{ 
    int id; 
    char *str; 
    l_est *pathsIn; 
    l_est *pathsOut; 
} Vrtc; 

typedef struct l_est{ 
    Vrtc **Vert; 
    int qtdElem; 
    int maxElem; 
} l_est; 

正如你可能知道,还会有一个问题“不明类型/类型未申报的节点内我希望有人能给出如何做到这一点小费,如果有可能

+0

我的提示:google“C forward declaration”。这是在这里需要的:插入'struct l_est;'作为第一行,并在'struct Vrtc'中使用'struct l_est * pathsIn,pathsOut;'。 – Scheff

+0

我会将标题改为“如何在定义之前使用结构”或“如何在结构中制作交叉指针”。顺便说一句。我发现:[SO:在C中交叉引用结构](https://*.com/questions/20341335/cross-referencing-structs-in-c)。 – Scheff

+0

[C中的交叉引用结构]的可能重复(https://*.com/questions/20341335/cross-referencing-structs-in-c) – Scheff

你必须使用一个forward declaration:。

typedef struct l_est l_est; 

typedef struct { 
    int id; 
    char *str; 
    l_est *pathsIn, *pathsOut; 
} Vrtc; 

typedef struct l_est { 
    Vrtc **Vert; 
    int qtdElem, maxElem; 
} l_est; 

struct l_est的第一个类型定义是所谓的“不完整类型”。这种类型可能是不是用于变量或与sizeof但它可能被用来声明指针。

不完整类型可能稍后被“完整类型”覆盖,而不会引起编译器的投诉。

类似的解决方案可以在其他语言中找到(例如Pascal)。