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

D. 楼层

我正在尝试使用 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 的值时不同。

用户2736738

你打印你返回的东西吗?

不。

你正在打印错误的东西。

 printf("%p\n",newNode);

现在您将看到您返回的值和您打印的值将匹配。以前,您正在返回事物并打印另一个。

解释

之前您是动态分配内存,返回的值malloc存储在局部变量中newNode现在您正在打印newNode的地址。不是newNode包含从函数返回的内容。

还要检查 的返回值malloc取消分配动态分配的内存。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用指向结构C ++的指针创建动态分配的数组

来自分类Dev

C++ 返回指向动态分配数组的指针

来自分类Dev

C函数返回指向结构的指针

来自分类Dev

c ++从函数返回指向结构的指针

来自分类Dev

C++ 删除指向动态分配对象的指针

来自分类Dev

C结构的动态分配

来自分类Dev

C结构的动态分配

来自分类Dev

C#Marhsal函数返回指向结构数组的指针

来自分类Dev

指向C ++中动态分配的2D数组中的一行的指针

来自分类Dev

函数和返回指针中2D数组的C动态分配

来自分类Dev

C 指针和动态分配

来自分类Dev

c动态分配结构数组

来自分类Dev

从文件C动态分配结构数组

来自分类Dev

在C中返回指向结构的指针

来自分类Dev

C ++在函数中使用指向结构的指针

来自分类Dev

C:指向返回枚举的函数的函数指针

来自分类Dev

在C语言中,将指针指向结构的值发送给函数时返回float会更改结构的值

来自分类Dev

如何删除指向动态分配对象的指针数组

来自分类Dev

用文字读取指向结构的动态分配数组

来自分类Dev

如何从函数返回指向结构的指针?

来自分类Dev

动态分配一个指针并集-C

来自分类Dev

C中的FILE指针是动态分配的吗?

来自分类Dev

如何将指针传递给函数并在函数C ++中动态分配内存

来自分类Dev

在结构中动态分配数组-C

来自分类Dev

具有动态分配的char数组的C ++结构

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

在C中的函数内动态分配函数中的内存

来自分类Dev

程序崩溃,从C函数访问动态分配的数组