我不是C先生,我更喜欢Java。我在我的一个伙伴身上看到了下面的代码,我很好奇它是否正常,因为它不适合他,但他说它应该工作,错误在其他地方。
typedef struct nameOfStruct {
type1 *elem1;
type2 *elem2;
struct nameOfStruct *next;
} *nameOfStruct;
那么,是否可以拥有*nameOfStruct
,或者它应该只是nameOfStruct
。
答案 0 :(得分:2)
这是有效的C,但使用(nameOfStruct
听起来像对象类型,但实际上它是一个指针)会令人难以置信。所以要避免它。
答案 1 :(得分:1)
如果没有看到调用代码,就不可能回答这个问题,但这是你应该知道的:
*nameOfStruct
为指向struct的指针创建了一个别名,这很容易产生误导,因为这个名称并不表示它实际上是一个指针。我不建议使用它。
如果他希望将其用作struct nameOfStruct
的快捷方式,请删除额外的*
。
答案 2 :(得分:0)
nameOfStruct
是指向struct nameOfStruct
的指针。
*nameOfStruct
是指向struct nameOfStruct
的指针。
两者都有效并且意味着不同的东西,我想你想要使用第一个。你应该命名你的typedef nameOfStruct_ptr
,因为名字很混乱。