将结构声明为指针,可能吗?

时间:2012-05-04 09:02:04

标签: c

我不是C先生,我更喜欢Java。我在我的一个伙伴身上看到了下面的代码,我很好奇它是否正常,因为它不适合他,但他说它应该工作,错误在其他地方。

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

*nameOfStruct为指向struct的指针创建了一个别名,这很容易产生误导,因为这个名称并不表示它实际上是一个指针。我不建议使用它。

如果他希望将其用作struct nameOfStruct的快捷方式,请删除额外的*

答案 2 :(得分:0)

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

两者都有效并且意味着不同的东西,我想你想要使用第一个。你应该命名你的typedef nameOfStruct_ptr,因为名字很混乱。