在此代码中,头部对象位于结构定义的正前方, 但是n是在int main中制作的。
我们可以直接声明头部的声明方式吗?我想我只是不理解struct node *n
与头部声明的方式有何不同,因为它们都是对象吗?
struct node
{
int data;
struct node *next;
}*head;
.
.
.
int main()
{
int i,num;
struct node *n;
head = NULL;
...
答案 0 :(得分:1)
在你的代码中,你混合了struct node
的声明和变量head
的声明,这是正确的C但TBH不太可读。
编写代码,就像那样:
struct node
{
int data;
struct node *next;
}; // declaration of struct node
.
.
struct node *head; //declaration of a variable head of type "pointer to struct node"
.
.
.
int main()
{
int i,num;
struct node *n; //declaration of a local variable n of type "pointer to struct node"
head = NULL;
...
它等同于您的代码,但更具可读性。
答案 1 :(得分:0)
“head”是一个全局指针,其中“n”是指向节点结构的本地指针。
另请注意,“head”和“n”都不是对象。它们是指向节点结构对象的指针。你需要为它们分配内存。