```在C`typedef struct`声明中是什么意思?

Osl*_*ley 7 c struct

我正在寻找一个C我以前从未见过的语法结构.结构如下所示:

typedef struct structExample {
   int member1;
   int member2
} * structNAME;
Run Code Online (Sandbox Code Playgroud)

我知道通常具有以下结构:

typedef struct structExample {
   int member1;
   int member2
} structNAME;
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式引用第二个结构定义的成员:

structNAME* tempStruct = malloc(sizeof(structNAME));
// (intitialize members)
tempstruct->member1;
Run Code Online (Sandbox Code Playgroud)

*第一个结构定义中的额外内容是什么,以及如何引用第一个结构定义的成员?

har*_*ald 6

这意味着定义的类型是指针类型。这是声明类型的等效方法:

struct structExample {
    int member1;
    int member2;
};
typedef struct structExample * structNAME;
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它:

structNAME mystruct = malloc (sizeof (struct structExample));
mystruct->member1 = 42;
Run Code Online (Sandbox Code Playgroud)

  • 值得一提的是,除了微软奇怪的、古老的编码标准之外,typedef:去掉指针通常被认为是 C 编程中非常糟糕的编码实践。 (2认同)
  • 将指针类型隐藏在 typedef 后面通常会导致胃灼热。除非该类型确实是不透明的,并且不由程序员手动取消引用(即,只是来回传递给 API),否则最好将指针显式声明为指针,即 `typedef struct ex {... } 结构体;mystruct *ptr;`。 (2认同)