gpt4 book ai didi

c - 如何在C中模拟输出参数

转载 作者:太空宇宙 更新时间:2023-11-04 05:55:17 25 4
gpt4 key购买 nike

我正在尝试用 C 实现一个链表,但我遇到了以下问题。我的节点定义如下:

struct node_t {
void* element;
node_t* previous;
node_t* next;
};

struct linkedlist_t {
node_t* head;
node_t* tail;
int length;
};

从链表中获取元素的方法具有以下签名:

// Gets an element from a linked list.
int linkedlist_get(linkedlist_t* linkedlist, unsigned int index, void* element);

因为我需要返回一个 int 来指示任何错误,所以我使用了一个 out 参数。但是,我不确定如何在方法内设置指针。我尝试这样做:

element = current->element; // The callee doesn't see it.
*((char*)element) = *((char*)current->element); // Copies only the first char

此外,我不想将元素从一个内存区域复制到另一个内存区域,我希望链表和被调用者都引用相同的内存区域。

最佳答案

你的get签名应该改成

int linkedlist_get(linkedlist_t* linkedlist, unsigned int index, void** element);

注意额外的*。然后在 get 例程中你可以做

*element = current->element;

哪个做你想要的。显然这是没有任何类型保护的旧式 C。小心你的内存处理。

关于c - 如何在C中模拟输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28785903/

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