如何在C中记忆二维数组:
我有一个二维数组:
int a[100][100];
int c[10][10];
我想使用memcpy
将数组c中的所有值复制到数组a,如何使用memcpy执行此操作?
int i;
for(i = 0; i<10; i++)
{
memcpy(&a[i][10], c, sizeof(c));
}
这是正确的吗?
答案 0 :(得分:12)
这应该有效:
int i;
for(i = 0; i<10; i++)
{
memcpy(&a[i], &c[i], sizeof(c[0]));
}
答案 1 :(得分:2)
我不认为这是正确的,没有。
memcpy()
无法知道a
的内存布局和“尊重”它,它会覆盖sizeof c
相邻的字节,这可能不是你的意思。
如果要复制到a
的“子广场”,则必须手动执行此操作。
答案 2 :(得分:2)
实际应该是:
for(i = 0; i < 10; ++ i)
{
memcpy(&(a[i][0]), &(c[i][0]), 10 * sizeof(int));
}