5

我想复制二维数组并将其分配给另一个数组。

在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 ?

4

3 回答 3

12

使用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);
于 2012-12-16T16:53:35.607 回答
9

使用memcpy,不要忘记包含<string.h>

#include <string.h>
void *memcpy(void *dest, const void *src, size_t n);

或者,使用循环手动执行,将每个值一一放置。

于 2012-12-16T16:55:26.240 回答
0

尽管答案是正确的,但应该指出,如果数组在结构内,分配结构也会复制数组:

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;
}
于 2022-03-05T22:59:12.617 回答