如何memcpy的C中的二維數組:如何memcpy C中的二維數組?
我有一個二維數組:
int a[100][100];
int c[10][10];
我想用memcpy
到所有的值數組複製C到數組,如何使用memcpy做到這一點?
int i;
for(i = 0; i<10; i++)
{
memcpy(&a[i][10], c, sizeof(c));
}
這是正確的嗎?
如何memcpy的C中的二維數組:如何memcpy C中的二維數組?
我有一個二維數組:
int a[100][100];
int c[10][10];
我想用memcpy
到所有的值數組複製C到數組,如何使用memcpy做到這一點?
int i;
for(i = 0; i<10; i++)
{
memcpy(&a[i][10], c, sizeof(c));
}
這是正確的嗎?
這應該工作:
int i;
for(i = 0; i<10; i++)
{
memcpy(&a[i], &c[i], sizeof(c[0]));
}
我不認爲這是正確的,沒有。
memcpy()
沒有辦法知道a
的內存中佈局和「尊重」它,它會覆蓋sizeof c
相鄰的字節,這可能不是你的意思。
如果您想要複製到a
的「子平方」,那麼您必須手動完成。
它實際上應該是:
for(i = 0; i < 10; ++ i)
{
memcpy(&(a[i][0]), &(c[i][0]), 10 * sizeof(int));
}
當我嘗試&(c [i] [0])時,它告訴我該錯誤:'*(c + 924u)[0]' – user2131316
'中的'operator []'不匹配您確定輸入的內容是正確的?我的編譯器告訴我什麼都沒有。你在使用哪種編譯器? – cgledezma
這取決於你想要的值去。它看起來不像你想要的。 –
你在'a'中有100倍的容量。你想要保存'c'的哪一個元素? – simonc
更喜歡'sizeof(c [i])',非? –