0

我在 C 方面不高深,我更喜欢 Java。我在我的一个伙伴那里看到了以下代码,我很好奇它是否可以,因为它对他不起作用,但他说它应该起作用并且错误在其他地方。

typedef struct nameOfStruct {
   type1 *elem1;
   type2 *elem2;
   struct nameOfStruct *next;
} *nameOfStruct;  

那么,是否有可能拥有*nameOfStruct,或者应该只是拥有nameOfStruct

4

3 回答 3

2

这是有效的 C,但使用起来会令人难以置信的混乱(nameOfStruct听起来像一个对象类型,但实际上它是一个指针)。所以避免它。

于 2012-05-04T09:05:49.080 回答
1

没有看到调用代码就不可能回答这个问题,但这是你应该知道的:

*nameOfStruct为指向结构的指针创建一个别名,这很容易引起误解,因为名称并不表明它实际上是一个指针。我不建议使用它。

如果他想将其用作快捷方式,struct nameOfStruct则删除额外的*.

于 2012-05-04T09:06:02.823 回答
0

nameOfStruct是指向 a 的指针struct nameOfStruct*nameOfStruct是指向 a 的指针的指针struct nameOfStruct

两者都是有效的并且意味着不同的东西,我想你想使用第一个。不过,您应该命名您的 typedef nameOfStruct_ptr,因为名称令人困惑。

于 2012-05-04T09:06:35.447 回答