所以我正在为一个学校项目用 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/