如何在C++中复制指针数组的数据

How to copy the data of an array of pointers in C++

本文关键字:指针 数组 数据 复制 C++      更新时间:2023-10-16

我正在尝试将指针数组中存在的数据复制到另一个指针。

我对C++知之甚少,但有些更高级的语言。

以下是我到目前为止取得的成就的示例代码(简化版本(:

#define MAX_ACTIVE_MODES 3
myStruct_t priorities1[MAX_ACTIVE_MODES];
myStruct_t *priorities2[MAX_ACTIVE_MODES];
for (unsigned short i = 0; i < MAX_ACTIVE_MODES; ++i) {
priorities2[i] = (myStruct_t*)malloc(sizeof(myStruct_t));
memcpy(priorities2[i], &priorities1[i], sizeof(myStruct_t));
}
// ...
delete[] *priorities2;

对我来说,有一个用于priorities1的非指针 var 并为priorities2提供一个更容易,因为我正在将其传递给排序函数。

当我寻找解决方案时,从来没有type *var[]的情况,我不明白为什么。

即使您的问题被标记为 c++,我假设您是根据您对malloc的使用用 C 编程的

。首先,您不需要使用memcpy来复制结构。

*priorities2[i] = priorities1[i];

应等效于

memcpy(priorities2[i], &priorities1[i], sizeof(myStruct_t));

其次,您不必在priorities1[]中创建元素的副本。只需将指针指向priorities1[]中的元素priorities2[]

for (size_t i = 0; i < MAX_ACTIVE_MODES; ++i) 
{
priorities2[i] = &priorities1[i];
}

只要您不访问超过priorities1生命周期的priorities2,就不需要mallocfree