gpt4 book ai didi

c - 动态分配的指向不从 C 函数返回的结构的指针

转载 作者:行者123 更新时间:2023-11-30 21:06:44 25 4
gpt4 key购买 nike

我正在尝试使用 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的返回值。取消分配动态分配的内存。

关于c - 动态分配的指向不从 C 函数返回的结构的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47342465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com