C++ 在函数参数中正确使用结构

C++ Proper use of struct in function arguments

本文关键字:结构 函数 参数 C++      更新时间:2023-10-16

关于将结构作为函数参数传递的快速问题。也许它是从 C 继承而来的,对C++没有区别。

在许多链表示例中,您会看到它们在任何采用结构的函数参数中重新声明单词 struct,我不明白为什么。或与此相关的任何分配。结构是它自己的对象,仅声明结构的名称就足够了。

例:

struct Node{
    int data;
    Node * next;
};
// Function to output data.
void printNode(struct Node* myNode){ 
    // Print data of node
}

为什么在函数 arg 中重新声明单词结构。 声明类型 Node* 就可以了。

谢谢。

C 和 C++ 使用struct关键字生成的声明是有区别的:

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

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

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