我正在尝试使用 C 中的链表编写一个索引程序。为此,我从函数返回一个指向动态分配结构的指针。但是,函数中指针的地址与返回值的地址不匹配。相关代码如下。
int main(int argc, char *argv[]){
...
struct wordlist *a = NULL;
...
a = firstNode(word);
printf("%p\n",(void*)&a);
...
}
struct wordlist * firstNode(char *fileWord){
struct wordlist *newNode = malloc(sizeof *newNode);
newNode->word = fileWord;
newNode->next = NULL;
newNode->previous = NULL;
printf("%s\n",newNode->word);
printf("%p\n",(void*)&newNode);
return newNode;
}
当我打印 newNode 的地址时,它总是与我在 main 中打印 a 的值时不同。
你打印你返回的东西吗?
不。
你正在打印错误的东西。
printf("%p\n",newNode);
现在您将看到您返回的值和您打印的值将匹配。以前,您正在返回事物并打印另一个。
之前您是动态分配内存,返回的值malloc
存储在局部变量中newNode
。现在您正在打印newNode
的地址。不是newNode
包含从函数返回的内容。
还要检查 的返回值malloc
。取消分配动态分配的内存。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句