所以我在C中为一个学校项目编写一个循环队列,我有以下问题。
在某些方法中,我使用指针,我需要复制它们。为了让队列适用于所有数据类型,我使用定义的element_t类型。这可以在调用队列的main.c中声明。
事情是这个复制功能必须在同一个main.c中实现。 由于它是一个学校项目,我们已经获得了标题,因此复制的方法如下所示:
void element_copy(element_t *dest_element, element_t src_element)
{}
我似乎无法为这种方法找到合适的代码,尽管我认为我错过了一些微不足道的东西。
*dest_element = src_element
似乎只是复制src元素值而不是它 指针对象。
对此有何帮助?
答案 0 :(得分:0)
如果我理解正确,那就是你需要的全部
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;