struct node*和struct node**的区别
时间: 2023-07-08 17:32:12 浏览: 186
`struct node*` 和 `struct node**` 都是 C 语言中的指针类型,但它们之间有很大的区别。
`struct node*` 表示指向 `struct node` 结构体的指针。这意味着变量存储了一个地址,该地址指向一个 `struct node` 结构体的实例。通过 `struct node*` 可以访问结构体中的成员变量,例如 `node_ptr->member` 的形式。
`struct node**` 则表示指向 `struct node*` 指针的指针。这种情况通常用于动态分配内存,例如创建一个指向 `struct node` 的指针数组。在这种情况下,每个元素都是指向 `struct node` 的指针,而 `struct node**` 存储了这个指针数组的地址。
总之,`struct node*` 用于指向结构体的单个实例,而 `struct node**` 用于指向指针数组的指针。
相关问题
struct Student { int class_num; char id[15]; char name[10]; float score[3]; float sum; float course_av[3]; float course_pass[3]; float course_max[3]; float course_min[3]; }; //链表节点定义 struct Node { struct Student student; struct Node* next; }; //链表定义 struct List { struct Node* head; //链表头节点 int size; //链表长度 }; struct List* createList(); //创建链表 void destoryList(struct List* list); //销毁链表 struct Node* createNode(struct Student student); //创建节点 struct Node* getLastNode(struct List* list); //获取链表最后一个节点 struct Node* getBeforeNode(struct List* list, struct Student student); //获取上一个节点 void addList(struct List* list, struct Node* node); //将节点添加到链表中 #endif 这是个什么数据结构?看起来不像单链表
这是一个单链表的实现,每个链表节点包含一个 `struct Student` 类型的数据,以及一个指向下一个节点的指针 `next`。链表的头节点定义在 `struct List` 中的 `head` 中,链表的长度定义在 `struct List` 中的 `size` 中。函数包括创建链表、销毁链表、创建节点、获取最后一个节点、获取上一个节点、将节点添加到链表中等操作。
struct Node* createNode(struct bookInfo data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->next = NULL; return newNode; }
这段代码是一个函数,名为createNode,返回一个指向结构体Node类型的指针。它接受一个结构体bookInfo类型的参数data,这个结构体包含了书籍的各种信息。在函数中,使用malloc函数为Node类型的结构体分配内存,然后将结构体中的data成员设置为传入的参数data,将next成员设置为NULL,最后返回这个新节点的指针。这个函数通常用于链表数据结构中创建新节点。
阅读全文