之前在学习链表的过程中,笔者认为新节点必须如下定义:
struct Node *p;
struct Node {
int val;
p pNext;
};
int main()
{
Node Node1;
Node Node2;
Node Node3;
……
}
看了老师的例程,发现老师定义了结构体数据类型之后,在main()函数中没有定义过结构体变量,而是使用结构体指针来定义链表的新节点。
随后笔者做了如下测试:
#include <stdio.h>
typedef struct num {
int age;
int sid;
} num1;
struct num *p;
int main() {
p = (struct num *)malloc(sizeof(num1));
p->age = 10;
p->sid = 20;
printf("%d %d\n", p->age, p->sid);
return 0;
}
发现一开始定义了【结构体类型】以及【结构体类型指针】后,在main()中仅需要使用malloc()为结构体指针开辟空间,即可创建结构体变量,并且可以用结构体指针来对结构体成员进行操作。
某种程度来说,可以使用【结构体类型指针】+【malloc()】来创建新的结构体变量。
另外,以下使用typedef 代码中,其实进行了两个操作:
typedef struct num {
int age;
int sid;
} num1;
1.定义了一个结构体数据类型num
2.用【num1】替换了struct num,在接下来的代码中可以使用num1 来定义结构体