在一天的大部分时间里,我一直试图用链接列表编写一个简单的程序。我的主要问题似乎是不理解为什么我访问的内存不是我认为的。我很疯狂,并且输出了所有可能的数据形式,但仍然无法理解为什么它不起作用。
例如,当我将&head
传递给需要node **location
的函数时,我想检查location
(因此head
)内的值是否为{{ 1}}或者不是,我应该使用NULL
还是应该使用if(!*location) return;
,看来后者是正确的,但为什么?
当我想在函数中创建if(!location) return;
来跟踪事物时,我应该从node *current
还是node* current = *head
开始,最重要的是,为什么?我注意到后者更好,但我仍然无法理解它。当我对语句进行类型转换时,警告会消失,但它似乎什么也没有解决。
以下是我写的一些函数,请你给我一些关于我在代码中没有意义的提示。最好,我希望理解为什么输出似乎是一个内存位置然后访问坏内存。
node* current = head
答案 0 :(得分:2)
您的return_append_tail
函数实际上并未附加任何内容,除非使用正确的location
调用,但您没有。{/ p>
您应该使用¤t->next
函数中的main
来调用它。