c - C 中的结构体指针

标签 c pointers struct

typedef struct data * Data;

我有这样的事情我不明白。稍后我有一些返回数据的函数。我不明白的是, data * Data 在我看来就像一个“空”结构..它里面没有任何东西。

那么,当我执行诸如 Data d; 之类的操作时,我会创建什么?如果该结构为空,我会从函数返回什么?

谢谢。

最佳答案

这行代码正在创建一个类型别名。这意味着Datastruct 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/

相关文章:

c - 优化此C(AVR)代码

c - 指定在 char 数组 c 中开始 strlen() 的位置

c++ - 如何解析以下字符串

c++ - 字符串类中指针和整数的比较 - C++

c - struct c 动态分配内存

c++ - gsl::not_null<T*> 与 std::reference_wrapper<T> 与 T&

c - 如果 "argstr"是 C 中的二维数组,那么 argstr = argstr[0] 怎么办?为什么值(value)观不一样?

python - long 的结构长度取决于字节顺序?

c - 如何在c中不使用全局变量

我可以以头文件实现中不存在的方式使用结构吗?