我正在看这个example,我发现有声明
struct edge
{
int x;
int y;
int weight;
struct edge *link;
}*front = NULL;
这究竟意味着什么?是否可以创建一个结构,该结构也是名称前面的指针,它是NULL ...?
答案 0 :(得分:4)
指向结构的指针和名为struct edge
的新类型的声明。
答案 1 :(得分:4)
struct只是另一种C类型,因此,它用于定义的变量可以创建为普通实例或指针:
int a, *pA=NULL; //normal instance, pointer instance
struct edge
{
int x;
int y;
int weight;
struct edge *link;
}sEdge, *front = NULL; //normal instance, pointer instance
并且,与任何指针变量一样,需要在可以安全使用之前指向拥有的内存:(示例)
int main(void)
{
// both variable types are handled the same way...
pA = &a; //point pointer variable to normal instance of `int a`
front = &sEdge;//point pointer `front` to instance of 'struct edge'
//allocate memory, resulting in assigned address with associated memory.
pA = malloc(sizeof(*pA));
front = malloc(sizeof(*front));
...
编辑 在评论中回答问题:
这个小例子不会引发错误或警告。 (编辑上面的问题,或者更好的是,发布另一个问题,显示您所看到的细节。)
struct edge
{
int x;
int y;
int weight;
struct edge *link;
}*front = '\0';
int main(void)
{
struct edge tree[10];
return 0;
}
答案 2 :(得分:2)
当你写作时,也许这会增加一些亮点:
struct edge
{
int x;
int y;
int weight;
struct edge *link;
};
你是说:我是creatig struct edge,我将用它来定义这个结构的对象,输入:
struct edge edgeObject;
但是当你写:
struct edge
{
int x;
int y;
int weight;
struct edge *link;
} edgeObject;
您说的是:我正在创建结构边缘,同时我定义类型为struct edge
的edgeObject。
这允许您直接使用该对象,因为它已经定义:
edgeObject.x = 0;
回到你的例子,你要说的是:我正在创建结构边缘,同时我是定义指向该结构front
的指针为NULL。