c - 用指针定义结构

标签 c

我是 C 的新手,正在尝试理解 structspointers。此结构声明末尾的 *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/

相关文章:

c - 当我们在 c 中用字符串文字初始化 char 数组时,会发生垃圾收集吗?

c - 如何声明一个函数,其参数与该函数具有相同的签名?

c++ - 对大文件的可移植支持

c - 如何确保 malloc/free fopen/fclose 匹配?

c - 使用 GDB 在 Eclipse 中调试 C 程序时的奇怪行为

c - 单向命名管道

c++ - 对编译器功能的误解

c - 关于从结构中获取字段作为字符串指针数组并将它们保存在字符串指针数组的实例变量中的问题

交叉编译找不到lib

c - 如何使用扩展的 gcc 程序集指定 x87 FPU 堆栈的破坏底部?