typedef struct data * Data;
我有这样的事情我不明白。稍后我有一些返回数据的函数。我不明白的是, data * Data 在我看来就像一个“空”结构..它里面没有任何东西。
那么,当我执行诸如 Data d;
之类的操作时,我会创建什么?如果该结构为空,我会从函数返回什么?
谢谢。
最佳答案
这行代码正在创建一个类型别名。这意味着Data
是struct data *
类型的别名。因此,每当您看到 Data
时,就好像您看到了一个指向 struct data
的指针。
当您执行诸如 Data d;
之类的操作时,您基本上是在声明一个指向 struct data
的指针。您没有初始化指针,因此它没有指向有效的结构数据
。因此取消引用指针将是无效的。
当您有一个 Data
类型的变量时,您需要在尝试取消引用它之前将其指向有效的位置。
也许一种不太令人困惑的方法是这样做:
typedef struct data *Data_ptr;
这至少传达了 Data_ptr
是指针类型别名的想法。
关于c - C 中的结构体指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29333051/