c - 如何将 memmove 与指针的指针一起使用?

标签 c pointers struct

我在 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/

相关文章:

C 列表的实现

c++ - 在 C++ 中使用指针加速访问数组

C++ 二叉树指针问题

c - 为什么 malloc 在分配内存时一直给出 "incompatible types"错误,即使指针和类型转换都是正确的类型

c - 从 IP 地址查找接口(interface)名称

在 Netbeans 中找不到 include 指令(对于 C 编程

c - 如何初始化指向堆栈的指针

c - 返回结构时出现段错误

c - 哈希表中的段错误 - C

c - C代码优化-防止多文件打开