缩短struct*pointer示例的方法,这样我就不会';你不必把它打印出来吗?

缩短struct*pointer示例的方法,这样我就不会';你不必把它打印出来吗?,c,struct,C,Struct,我记得我的教授向我们展示了如何替换“struct”语句,例如struct*pointerexample,这样我们就不必每次都键入它。但是,我不记得他们是否使用了预处理器指令,比如#define,或者他们是如何做到的。有什么想法吗?另外,我如何定义示例结构*点示例?这是正确的方法吗 typedef struct pointerexample SPE, * PSPE; 现在您可以使用SPE而不是长名称。最好不要使用PSPE作为指向后者的指针,因为在我看来,这接近于破坏代码 使用预处理器也可以: #

我记得我的教授向我们展示了如何替换“struct”语句,例如
struct*pointerexample
,这样我们就不必每次都键入它。但是,我不记得他们是否使用了预处理器指令,比如
#define
,或者他们是如何做到的。有什么想法吗?另外,我如何定义示例结构*点示例?这是正确的方法吗

typedef struct pointerexample SPE, * PSPE;
现在您可以使用
SPE
而不是长名称。最好不要使用PSPE作为指向后者的指针,因为在我看来,这接近于破坏代码

使用预处理器也可以:

#define SPE struct pointerexample
然而,在某些情况下,后一种方法可能会导致意外结果。这里不需要使用前置处理器,因为有前一种解决方案

现在您可以使用
SPE
而不是长名称。最好不要使用PSPE作为指向后者的指针,因为在我看来,这接近于破坏代码

使用预处理器也可以:

#define SPE struct pointerexample
然而,在某些情况下,后一种方法可能会导致意外结果。这里不需要使用预处理器,因为有前一种解决方案。

使用类型定义:

struct pointerexample {};

typedef struct pointerexample *ppe;
有了它,您可以使用
ppe
创建指向
pointerexample
的指针:

ppe var1, var2;
使用typedef:

struct pointerexample {};

typedef struct pointerexample *ppe;
有了它,您可以使用
ppe
创建指向
pointerexample
的指针:

ppe var1, var2;

一种常见的方法是首先使用
typedef
来减少声明结构时的键入量。这允许您只使用命名类型,而不必到处使用
struct
关键字。例如:

typedef struct myStruct {
  int a;
  char c;
} myStruct_t;

myStruct_t aStruct;        // Declare a struct
aStruct.a = 0;             // Set a to zero
myStruct_t* pS = &aStruct; // Pointer to a struct
pS->a=1;                   // Set a to one

一种常见的方法是首先使用
typedef
来减少声明结构时的键入量。这允许您只使用命名类型,而不必到处使用
struct
关键字。例如:

typedef struct myStruct {
  int a;
  char c;
} myStruct_t;

myStruct_t aStruct;        // Declare a struct
aStruct.a = 0;             // Set a to zero
myStruct_t* pS = &aStruct; // Pointer to a struct
pS->a=1;                   // Set a to one


struct*pointerexample
甚至不是有效的C。您可能会想到
typedef
。因为它省略了结构的名称。@Caleb哦,对了,结构的名称不是指针,对象的名称是,对吗?
struct pe*
typedef struct pe
然后你可以说
pe*
struct*pointerexample
甚至不是有效的C。你可能会想到
typedef
。因为它省略了结构的名称。@Caleb哦,对了,结构的名称不是指针,对象的名称是,对吗?
struct pe*
typedef struct pe pe
那么你可以说
pe*
@Caleb:虽然
typedef
指针类型对我来说真的很难,但我确实调整了我的示例。@Caleb:虽然
typedef
指针类型对我来说真的很难,但我确实调整了我的示例。
不是保留后缀吗,根据C-标准?@alk-由POSIX保留@阿尔克:说得好,我不知道这是POSIX保留的。我已经更新了答案。谢谢。
\u t
是不是一个保留后缀,按照C标准?@alk-它是由POSIX保留的@阿尔克:说得好,我不知道这是POSIX保留的。我已经更新了答案。谢谢。C语法允许在没有名字的情况下使用struct,所以我不明白为什么编码人员给struct起了一个名字,并对它进行了类型定义。我看到很多代码给结构起了一个名字,但从未使用过。如果结构是递归的,我可以看到它的用处,但在本例中,不需要它。此外,我通常用预处理器条件来包装我的结构,以防我必须将其移植到C89或更旧的编译器,而上述方法不起作用。C语法允许使用结构而不使用名称,因此我不明白为什么编码器会给结构命名并对其进行类型定义。我看到很多代码给结构起了一个名字,但从未使用过。如果结构是递归的,我可以看到它的用处,但在本例中,不需要它。此外,我通常用预处理器条件来包装我的,以防我必须将其移植到C89或更旧的编译器,而上述方法不起作用。