我是 C 的新手,正在尝试理解 structs
和 pointers
。此结构声明末尾的 *Building
有什么作用?
typedef struct building {
char *floor;
struct building *nextBuilding;
} *Building;
是不是意味着从现在开始我做的时候
Building someBuilding = malloc(sizeof(struct building));
somebuilding 是指向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
而不是 bp.floor
.
关于c - 用指针定义结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22442746/