我想复制二维数组并将其分配给另一个数组。
在python中我会做这样的事情
grid = [['a','b','c'],['d','e','f'],['g','h','i']]
grid_copy = grid
我想在 C 中做同样的事情。
char grid[3][3] = {{'a','b','c'},{'d','e','f'},{'g','h','i'}};
如何将此数组复制到 copy_grid ?
我想复制二维数组并将其分配给另一个数组。
在python中我会做这样的事情
grid = [['a','b','c'],['d','e','f'],['g','h','i']]
grid_copy = grid
我想在 C 中做同样的事情。
char grid[3][3] = {{'a','b','c'},{'d','e','f'},{'g','h','i'}};
如何将此数组复制到 copy_grid ?
使用memcpy
标准功能:
char grid[3][3] = {{'a','b','c'},{'d','e','f'},{'g','h','i'}};
char grid_copy[3][3];
memcpy(grid_copy, grid, sizeof grid_copy);
使用memcpy,不要忘记包含<string.h>
#include <string.h>
void *memcpy(void *dest, const void *src, size_t n);
或者,使用循环手动执行,将每个值一一放置。
尽管答案是正确的,但应该指出,如果数组在结构内,分配结构也会复制数组:
struct ArrStruct
{
int arr[5][3];
};
int main(int argc, char argv[])
{
struct ArrStruct as1 =
{ { { 65, 77, 8 },
{ 23, -70, 764 },
{ 675, 517, 97 },
{ 9, 233, -244 },
{ 66, -32, 756 } } };
struct ArrStruct as2 = as1;//as2.arr is initialized to the content of as1.arr
return 0;
}