我对C比较陌生,我试图理解structspointers。这个struct声明末尾的*Building是做什么的?

typedef struct building {
        char *floor;
        struct building *nextBuilding;
} *Building;

是不是说从现在开始
Building someBuilding = malloc(sizeof(struct building));

某个建筑物是指向abuilding的指针?

最佳答案

是的,当你写:

 typedef struct building { … } *Building;

 Building bp;

然后bp是指向struct building的指针。但是,在typedef中包含指针通常被认为是错误的样式;如果使用以下代码,则更容易理解:
 typedef struct building { … } Building;

 Building *bp;

现在可以清楚地看到bp的定义,类型是指针。如果您永远不会访问结构的内部,那么这并不太重要(但是请看FILE *中的<stdio.h>;您总是编写FILE *fp,等等)。如果要访问内部:
printf("Floor: %s\n", bp->floor);

那么最好让指针可见。当人们看到Building bp;而不是bp->floor时,会有点惊讶。

关于c - 用指针定义结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22442746/

10-09 13:26