【发布时间】: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 谢谢!这正是我想要的!干杯!