之前在学习链表的过程中,笔者认为新节点必须如下定义:
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 来定义结构体