如何使用指针指针的memmove?

时间:2014-02-16 02:31:40

标签: c pointers struct

我在C中有以下结构:

typedef struct {
double value;
char* name;
} COMPONENT;

我有以下指针向量:

COMPONENT **list = malloc(sizeof(COMPONENT*)*100);

此列表仅包含10个COMPONENT结构指针,甚至分配给100个元素,确定。现在,我想使用memmove在第一个位置插入一个新的COMPONENT:

memmove(list+sizeof(COMPONENT*), list, sizeof(COMPONENT*)*10);
list[0] = new_element_ptr;

但是这个操作不起作用= [。我正在丢失所有其他引用(列表[1],列表[2]等等...)。这是不同的因为它是一个结构而我的向量只有指针吗?

1 个答案:

答案 0 :(得分:3)

这就是你要找的东西:

memmove(list + 1, list, sizeof(list[0]) * 10);

添加到指针时,不是添加字节偏移量,而是添加元素数量。