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

41ik7eoe  于 2023-04-05  发布在  其他
关注(0)|答案(1)|浏览(98)

我了解到typedef允许我给予一个结构体一个可以引用的名称,而不需要在名称前指定struct。

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

但是,如果我需要从结构体内部创建指向Network结构体的指针,我将需要像下面这样使用非typedef名称。

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

尽管如此,我遇到了一个案例,我无法弄清楚或找到任何资源,你可以在下面的例子中看到。现在,这实际上是做什么的?这个指针版本的网络做什么,与我上面提供的其他2个例子相比,它有什么用途?

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

我最初认为这和只把Network作为指针赋值是一样的,但我不确定。例如,我最初认为下面的内容会是一样的,但我不确定。

Network* network;
PNetwork network2;
js81xvg6

js81xvg61#

声明了两个typedef名称

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

类型struct Network的别名(typedef名称)Network和指针类型struct Network *的别名PNetwork
您可以通过类比变量声明来考虑这样的typedef声明,例如

int Network, *PNetwork;

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

typedef int Network, *PNetwork;

使用这些typedef名称,您可以声明变量,例如

Network my_integer = 10;
PNetwork pointer_to_my_integer = &my_integer;

相关问题