【问题标题】:Possible to copy char *a[] and char *b[]可以复制 char *a[] 和 char *b[]
【发布时间】:2021-08-28 20:26:38
【问题描述】:

假设我做了 2 个字符 *arrays[]:

char *a[some number] = {0};
char *b[some number] = {0};

//do some operations and set elements for char *a[]

如何在不设置 b[index] = a[index] 的情况下将 char *a[] 的元素复制到 char *b[]。因为这最终会使 b[index] 指向 a[index](然后我想更改 a[index],而不更改或影响 b[index])。

有没有办法做到这一点?

【问题讨论】:

  • 复制a的元素指向的内容,并将指向副本的指针分配给b的元素。如果指向的是字符串(由空字符终止的字符序列),strdup() 应该很有用(如果它在您的环境中可用)。否则,您必须通过某种方式确定要复制的大小。还要注意不要取消引用 NULL 进行复制。
  • 我认为您要问的概念是“深拷贝”。将a的内容复制到b是浅拷贝。要执行深度复制,您需要复制a 指向的每个对象,然后将指向复制的指针放入b。这样一来,您对 a 所做的任何事情都不会影响与 b 相关的任何事情。
  • b[index] = a[index] 导致b[index]a[index] 指向内存中其他地方的某个对象。他们不指向对方
  • @MikeCAT 谢谢!这正是我想要的!干杯!

标签: arrays c pointers memory


【解决方案1】:

假设两个数组中的指针都引用了有效的字符数组。

memcpy(b[x], a[x], size_of_of_the_object_referenced_by_b[x]);

【讨论】:

  • 您的源和目标看起来互换了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 2022-11-29
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
  • 2017-10-21
相关资源
最近更新 更多