gpt4 book ai didi

将指向结构的指针复制到新指针以复制 C 中的结构

转载 作者:行者123 更新时间:2023-11-30 18:51:09 27 4
gpt4 key购买 nike

我有这种情况,我想在一些哈希表(链表)中存储指向结构的指针我有:

struct Base {
int age;
};

struct Base *l1 = malloc(sizeof(struct Base ));
l1->age = 20;

现在我卡在代码中的某个地方(内心深处)我有一个函数可以给我指向 Base 的指针

callback_(struct Base *l)
{

我不想指向l1,当回调结束时它就会消失我想创建指向 l1(年龄)值的基址的新指针

struct Base  *l2 = ???;

我需要复制每个值吗? (深拷贝)在房地产中,有很多成员和数据分配,所以我需要比深度复制更好的东西

最佳答案

有两种方法可以处理这种情况。您可以在回调中创建新的结构对象并执行结构的“平面”复制,或者编写自己的函数来复制对象。这类似于保留隐式复制构造函数或在 C++ 中编写您自己的复制构造函数。

选项 1:

callback_(struct Base *l)
{
struct Base *l2 = malloc(sizeof *l2);
*l2 = *l;
// ...
}

选项 2:

struct copyBase* Base(struct Base* op)
{
struct Base* this = malloc(sizeof *this);
this->age = op->age;

return this;
}

您可以在回调中使用它,如下所示:

callback_(struct Base *l)
{
struct Base *l2 = copyBase(l);
// ...
}

关于将指向结构的指针复制到新指针以复制 C 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37867693/

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