我在 C 方面不高深,我更喜欢 Java。我在我的一个伙伴那里看到了以下代码,我很好奇它是否可以,因为它对他不起作用,但他说它应该起作用并且错误在其他地方。
typedef struct nameOfStruct {
type1 *elem1;
type2 *elem2;
struct nameOfStruct *next;
} *nameOfStruct;
那么,是否有可能拥有*nameOfStruct
,或者应该只是拥有nameOfStruct
。
我在 C 方面不高深,我更喜欢 Java。我在我的一个伙伴那里看到了以下代码,我很好奇它是否可以,因为它对他不起作用,但他说它应该起作用并且错误在其他地方。
typedef struct nameOfStruct {
type1 *elem1;
type2 *elem2;
struct nameOfStruct *next;
} *nameOfStruct;
那么,是否有可能拥有*nameOfStruct
,或者应该只是拥有nameOfStruct
。
这是有效的 C,但使用起来会令人难以置信的混乱(nameOfStruct
听起来像一个对象类型,但实际上它是一个指针)。所以避免它。
没有看到调用代码就不可能回答这个问题,但这是你应该知道的:
*nameOfStruct
为指向结构的指针创建一个别名,这很容易引起误解,因为名称并不表明它实际上是一个指针。我不建议使用它。
如果他想将其用作快捷方式,struct nameOfStruct
则删除额外的*
.
nameOfStruct
是指向 a 的指针struct nameOfStruct
。
*nameOfStruct
是指向 a 的指针的指针struct nameOfStruct
。
两者都是有效的并且意味着不同的东西,我想你想使用第一个。不过,您应该命名您的 typedef nameOfStruct_ptr
,因为名称令人困惑。