C ++在函数参数中正确使用struct

时间:2017-02-01 19:20:26

标签: c++ struct

关于将结构作为函数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 *可以正常工作。

感谢。

2 个答案:

答案 0 :(得分:6)

C和C ++使用struct关键字生成的声明之间存在差异:

  • 在C中,struct定义了新的struct 标记,但未定义新的类型
  • 在C ++中,struct定义了一个新的类型

结果是C ++允许您使用struct中定义的名称,而C要求您在struct前加上标记,或使用typedef定义新类型

答案 1 :(得分:0)

C需要它。 C ++不需要它,但允许它向后兼容。不要为新代码执行此操作。