c - C中的指针深拷贝

标签 c pointers copy deep-copy

所以我正在为一个学校项目用 C 编写一个循环队列,但我遇到了以下问题。

在某些方法中,我使用指针,我需要复制它们。为了让队列使用所有数据类型,我使用定义的 element_t 类型。这可以在调用我的队列的 main.c 中声明。

关键是这个复制函数必须在同一个 main.c 中实现。 由于这是一个学校项目,我们已经获得了标题,所以执行复制的方法如下所示:

void element_copy(element_t *dest_element, element_t src_element)
{}

我似乎找不到适合此方法的代码,尽管我认为我遗漏了一些微不足道的东西。

*dest_element = src_element 

似乎只是复制 src 元素值而不是它的 指针。

有什么帮助吗?

最佳答案

如果我没理解错的话,是的,这就是你所需要的

void element_copy(element_t *dest_element, element_t src_element)
 {
    /* prevent undefined behavior */
    if (dest_element == NULL)
        return;
    *dest_element = src_element;
 }

如果你愿意,你可以包含 string.h 然后

void element_copy(element_t *dest_element, element_t src_element)
 {
    /* prevent undefined behavior */
    if (dest_element == NULL)
        return;
    memcpy(dest_element, &src_element, sizeof(src_element));
 }

但以上都没有意义,因为示例用法是

element_t x;
element_t y;

memset(&x, 0, sizeof(x));
element_copy(&y, x);

完全一样

element_t x;
element_t y;

memset(&x, 0, sizeof(x));
y = x;

关于c - C中的指针深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29050108/

相关文章:

c - 如何创建一个新的子目录并将文件复制到其中? (Unix 中的 C 实用程序)

python - 重用基础图而无需重新绘制

c - 在两台直接相连的计算机之间的UDP连接中分配地址地址

c - 使用 pthread_create 调用类型为 "int argc, char** argv -> int"的 C 函数

c - 将 fprintf() 插入此循环会导致其无限循环。为什么?

c++ - 链表插入错误

将 mp3 文件的数据复制到另一个文件。 C

c - 如何检查无法通过%识别的scanf输入

c - C中两个指针之间的距离

c - 运算符 -> 在 malloc 函数中