这两种符号有什么区别



所以,基本上我想知道这两种符号之间的区别(如果有的话(是什么:

第一个例子:

struct Node{
int data;
Node* next;
};
Node* head;

第二个例子:

struct Node{
int data;
struct Node* next;
}
struct Node* head;

我只是想知道这两种符号之间有什么区别,哪种更好?

我想知道这两种符号之间有什么区别(如果有的话(

Node是一个类的类型名。只有在声明了类的情况下才能使用它。示例:

Node* ptr; // won't work without prior declaration
struct Node;
struct Node;
Node* ptr; // works because of prior declaration

struct Node是使用详细的类型说明符的相同类型名称。它是类本身的声明。示例:

struct Node* ptr; // works without prior declaration

当函数和类具有相同名称时,可以使用详细的类型说明符来消除歧义:

struct Node;
void Node();
void foo() {
Node* ptr;        // this won't work
struct Node* ptr; // this works
Node();           // this is a function call
}

假设在您的示例中,类已经声明,并且没有不明确的函数,除了struct Node的类型大约长64%之外,没有其他区别。

两个使用哪个更好?

您喜欢哪个。你喜欢多打字还是少打字?


关于C语言的注意:在C中,结构不会自动获得类型名称,因此只能使用详细的类型说明符来引用它们,除非使用typedef显式地为结构指定了类型名称。这就是为什么你可能会看到C中比C++中更常用的详细类型说明符,以及C++中多余的typedef。

相关内容

  • 没有找到相关文章

最新更新