首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C++中复制指针数组的数据

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

Stack Overflow用户
提问于 2020-01-12 05:19:07
回答 1查看 172关注 0票数 1

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

我的C++知识很少,但有一些更高级的语言。

以下是我到目前为止所实现的示例代码(简化版本):

代码语言:javascript
运行
复制
#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的非指针变量和一个用于priorities2的非指针变量更容易,因为我将它传递给一个排序函数。

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

EN

Stack Overflow用户

发布于 2020-01-12 05:46:52

尽管您的问题被标记为c++,但根据您对malloc的使用,我假设您使用的是C语言。

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

代码语言:javascript
运行
复制
*priorities2[i] = priorities1[i];

应该等同于

代码语言:javascript
运行
复制
memcpy(priorities2[i], &priorities1[i], sizeof(myStruct_t));

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

代码语言:javascript
运行
复制
for (size_t i = 0; i < MAX_ACTIVE_MODES; ++i) 
  {
     priorities2[i] = &priorities1[i];
  }

只要您在priorities1的生命周期之外不访问priorities2,就不需要mallocfree

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59698723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档