我对如何将引用传递给双指针有点困惑,我什至不确定这是否正是我要寻找的。p>
基本上,我遇到的问题是使用双向排序的链表。我有一个函数,它接收指向我的 songNode 的指针,以按照评分顺序重新排列歌曲。如果评级收到零分,它会通过此函数确保用户提供 1 到 5 之间的有效评级,并将其重新插入到链表中。
我有点困惑的部分是改变传递给第一个函数的 head 的初始值,如下所示:
songNode* head = NULL;
songNode* tail = NULL;
displaySongs(head);
printf("\n\n");
reassignSongs(head, tail);
reassignSongs 函数采用指向这些歌曲节点的指针。在 reassignSongs 函数中,它调用一个函数,该函数采用指向这些头和尾变量的双指针。
addSongToList(artist, title, rating, &head, &tail);
int addSongToList(char* artist, char* title, int rating, songNode** head, songNode** tail)
这个函数操作 head 指针,当我回到 main 函数时,head 变量仍然是原来的样子,因为对这个变量的引用没有改变..
我真的只想知道这通常是如何处理的?你会研究三重指针吗?四重指针?获取指针的地址?
最佳答案
reassignSongs
函数的定义应如下所示:
void reassignSongs(songNode **head, songNode **tail)
你的调用看起来像:
reassignSongs(&head, &tail);
使用它的原因是更改存储在head
或tail
中的地址。要在调用函数中引用 head 指向的 songNode
必须使用 (*head)
或 (*tail)
来引用指向指向节点的指针,以便您可以在函数内编辑列表的 head
或 tail
。
关于c - 传递对双指针的引用 - 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005807/