如何在结构中创建十字指针
问题描述:
所以,这里是我的问题,我想创建一个图形数据库。我的概念想法是一个节点(它将在代码中是“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;
正如你可能知道,还会有一个问题“不明类型/类型未申报的节点内我希望有人能给出如何做到这一点小费,如果有可能
答
你必须使用一个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)。
我的提示:google“C forward declaration”。这是在这里需要的:插入'struct l_est;'作为第一行,并在'struct Vrtc'中使用'struct l_est * pathsIn,pathsOut;'。 – Scheff
我会将标题改为“如何在定义之前使用结构”或“如何在结构中制作交叉指针”。顺便说一句。我发现:[SO:在C中交叉引用结构](https://stackoverflow.com/questions/20341335/cross-referencing-structs-in-c)。 – Scheff
[C中的交叉引用结构]的可能重复(https://stackoverflow.com/questions/20341335/cross-referencing-structs-in-c) – Scheff