我如何(深)复制C中的数组?

时间:2011-02-14 09:24:02

标签: c

参考http://www.devx.com/tips/Tip/13291,它说我可以使用memcpy复制的大小由sizeof()确定,但是,不是指向指针的数组吗?

除了遍历数组之外,我如何使用memcpy深度复制数组?

谢谢!

3 个答案:

答案 0 :(得分:8)

在链接示例int weekly_hours[5][5];中为25个整数分配空间。没有进一步的间接,因此您可以安全地使用memcpy来复制它的值。

答案 1 :(得分:6)

连续分配多维数组。一个指针数组(指针......)是一个不同的东西(每个子指针应该自己分配/复制/释放)。

不要因为在大多数情况下可以互换使用一维数组和单个指针这一事实而感到困惑,因为它们在技术上并不相同。

答案 2 :(得分:4)

希望能够澄清一些困惑:

  • 数组是分配的一块, 相邻的存储单元。
  • 数组变量名称可以转换(“衰减”)为指向数组第一个元素的指针,但不是相反。每次在指针算术中使用数组变量名时,都会隐式完成此操作。
  • 您可以在任何静态分配的数组的变量名上使用sizeof()运算符,以获取数组中 bytes 的数量。如果在静态分配的多维数组上使用sizeof(),则同样适用。
  • 如果在a上使用sizeof()运算符 指针,你会得到一个大小 指针(即32位上的4个字节) 机)。