我了解到 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;
声明了两个 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;