关于将结构作为函数arg传递的快速问题。也许它是来自C的结转,这对C ++没有任何影响。
在许多链接列表示例中,您会看到它们在任何带有结构的函数参数中重新声明了单词struct,我不明白为什么。或任何分配。结构是它自己的对象,只声明结构的名称就足够了。
示例:
struct Node{
int data;
Node * next;
};
// Function to output data.
void printNode(struct Node* myNode){
// Print data of node
}
为什么在函数arg中重新声明了struct这个词。声明类型Node *可以正常工作。
感谢。
答案 0 :(得分:6)
C和C ++使用struct
关键字生成的声明之间存在差异:
struct
定义了新的struct
标记,但未定义新的类型 struct
定义了一个新的类型。结果是C ++允许您使用struct
中定义的名称,而C要求您在struct
前加上标记,或使用typedef
定义新类型
答案 1 :(得分:0)
C需要它。 C ++不需要它,但允许它向后兼容。不要为新代码执行此操作。