gpt4 book ai didi

c - 将 void* 指针从函数返回到其他函数参数

转载 作者:行者123 更新时间:2023-11-30 15:59:41 24 4
gpt4 key购买 nike

我正在尝试构建一个处理元素的通用列表程序中的每个对象(指向结构的指针)都应该使用这个列表,

这就是 void* 的定义,从现在开始它是 Element。和添加函数签名:

typedef void* Element;
void AddElementToList(List thisList , Element toAdd);

以及创建用户函数和用户定义:

typedef struct FacebookUser_t* User;
User CreateUser(char* const lineToSplit);

这就是我调用该函数的方式:

AddElementToList(thisServer->UsersList , (Element)CreateUser(line));

在调试创建用户函数并为其分配值时,在它返回后,对象似乎变空,然后在添加元素处它被压碎。这就是返回:

return toAdd;

“toAdd”是用户类型。我做错了什么?

最佳答案

如果没有更多信息,很难说,但您需要注意对象范围:- 您的 CreateUser 函数必须使用 malloc 或类似方法为堆上的 FacebookUser_t 对象分配内存,并返回指向该对象的指针(类型 User;这就是为什么 @OliCharlesworth 警告将指针隐藏在 typedef 后面:User 不是用户对象,并且不分配内存)。

你的最后一行暗示了另一个可能的问题。您指定 toAdd 作为函数 AddElementToList 的参数,然后您谈到返回“toAdd”,但该函数的类型为“void”。恕我直言,这里有些令人困惑,您可能需要查看这些部分。

关于c - 将 void* 指针从函数返回到其他函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8544149/

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