我在 C 中有以下结构:
typedef struct {
double value;
char* name;
} COMPONENT;
我有以下指针 vector :
COMPONENT **list = malloc(sizeof(COMPONENT*)*100);
这个列表只包含 COMPONENT 结构的 10 个指针,甚至分配给 100 个元素,好的。现在,我想使用 memmove 在第一个位置插入一个新的 COMPONENT:
memmove(list+sizeof(COMPONENT*), list, sizeof(COMPONENT*)*10);
list[0] = new_element_ptr;
但是这个操作不起作用=[。我正在丢失所有其他引用资料(list[1]、list[2] 等等...)。这是因为它是一个结构而我的 vector 只有指针而不同吗?
最佳答案
这就是你要找的:
memmove(list + 1, list, sizeof(list[0]) * 10);
添加到指针时,您不是在添加字节偏移量,而是在添加元素数量。
关于c - 如何将 memmove 与指针的指针一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21806537/