void insertBook(MaBook** p, Book book)中 *p是什么
时间: 2023-07-23 18:56:13 浏览: 79
在函数 `void insertBook(MaBook** p, Book book)` 中,`*p` 是一个指向指针的指针,也可以称为二级指针。它可以用来修改指向指针的指针所指向的值。在这个函数中,`*p` 存储了链表的头指针的地址,通过修改 `*p` 所指向的值,就可以改变链表的头指针。换句话说,`*p` 存储了链表头指针的地址,而 `**p` 存储了链表头指针的值。因此,使用二级指针可以在函数内部修改指针本身所指向的值,从而实现链表的插入操作。
相关问题
void insertBook(MaBook** p, Book book) { // insertBook(&p, book3); MaBook* p = NULL; MaBook *newBook = initBook(book); if (*p == NULL) { *p = newBook; return; } (*p)->front = newBook; newBook->next = *p; *p = newBook; }
这段代码是用来实现向一个链表中插入一本书的函数。函数的参数包括一个指向指针的指针 p 和一本书的信息 book。首先,它通过调用 initBook 函数创建了一个新的链表节点 newBook,并将 book 的信息存储在新节点中。然后,它检查指针 *p 是否为空。如果是空链表,就将新节点 *p 的指向,使其成为链表的第一个节点,然后返回函数。如果不是空链表,就把新节点插入到链表的头部,然后更新指针 *p 指向新节点,使其成为新的链表头部。
那么用你可以用void insertBook(MaBook* p, Book book)写一个方法吗
可以,以下是一个示例:
```
void insertBook(MaBook* p, Book book) {
if (p->numBooks == MAX_BOOKS) {
printf("The library is full\n");
return;
}
p->books[p->numBooks] = book;
p->numBooks++;
}
```
这个方法会将参数`book`插入到参数`p`指向的MaBook结构体中的`books`数组中。如果MaBook结构体中的`numBooks`已经等于数组的最大长度`MAX_BOOKS`,则会输出一条错误信息并返回。否则,会将`book`添加到数组中,并将`numBooks`加1。
阅读全文