指针 typedef 结构在 C 中如何工作?

问题描述 投票:0回答:1

我了解到 typedef 允许我给一个结构体一个可以引用的名字,而不需要在名字前指定结构体。例如,我可以通过 2 种不同的方式创建网络实例

struct Network network;
或喜欢
Network network;

typedef struct Network {
  bool enabled;
  long long counter;
} Network;

但是,如果我需要从结构内部创建一个指向我的网络结构的指针,我将需要使用非 typedef 名称,如下所示。

typedef struct Network {
  bool enabled;
  long long counter;
  struct Network* network;
} Network;

综上所述,我遇到了 1 个案例,我无法弄清楚或找不到您可以在以下示例中看到的任何资源。现在这实际上是做什么的? Network 的这个指针版本有什么作用,与我上面提供的其他 2 个示例相比有什么用途?

typedef struct Network {
  bool enabled;
  long long counter;
} Network, *PNetwork;

我最初认为这与将网络分配为指针一样,但我不确定。例如,我最初认为以下内容是相同的,但我不确定。

Network* network;
PNetwork network2;
c struct declaration typedef
1个回答
0
投票

声明了两个 typedef 名称

typedef struct Network {
  bool enabled;
  long long counter;
} Network, *PNetwork;

别名(typedef 名称)

Network
类型
struct Network
和别名
PNetwork
指针类型
struct Network *
.

您可以通过类比变量声明来考虑这样的 typedef,例如

int Network, *PNetwork;

只有在 typedef 声明中有声明的类型名称而不是变量。

typedef int Network, *PNetwork;

所以使用这些 typedef 名称你可以像这样声明变量

Network my_integer = 10;
PNetwork pointer_to_my_integer = &my_integer;
© www.soinside.com 2019 - 2024. All rights reserved.