我在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]等等...)。这是不同的因为它是一个结构而我的向量只有指针吗?
答案 0 :(得分:3)
这就是你要找的东西:
memmove(list + 1, list, sizeof(list[0]) * 10);
添加到指针时,不是添加字节偏移量,而是添加元素数量。