我对C比较陌生,我试图理解structs
和pointers
。这个struct声明末尾的*Building
是做什么的?
typedef struct building {
char *floor;
struct building *nextBuilding;
} *Building;
是不是说从现在开始
Building someBuilding = malloc(sizeof(struct building));
某个建筑物是指向a
building
的指针? 最佳答案
是的,当你写:
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/