2011-10-26 80 views
1

我有一個3D陣列int main[N][N][N],我需要創建具有int buf[N][N]的節點結構。C變量等於或memcpy的

當是可以安全使用buf = main[index] VS memcpy(buf,main[index],sizeof(main[index]));

+0

從不.........! –

+2

我不認爲調用一個變量'main'是個好主意。你的編譯器是否真的吞下了它? – vsz

回答

1

如果buf是一個指針,你不需要一個副本,它的安全使用=。如果buf是已經分配的數組或指針,那麼如果您確實需要拷貝,通常會做什麼,然後memcpy

2

如果buf是一個數組,那麼它不是左值。如果它不是一個左值,你永遠不能分配給它(語法錯誤)。

0

如果複製的存儲在C連續部分,memcpy是安全的,可能不是通過複製元素做元素更加高效。之所以說memcpy是潛在的更快,是因爲不同的CPU技巧可以用來複制比機器字大小的塊。然而,情況並非總是如此,因此分析將是您比較兩種選擇的唯一方法。

此外,您大概意思,比較了基於循環拷貝,而不是直接分配,因爲分配給數組變量是無效C.

+1

他甚至沒有做元素複製。 –

+0

我加入到我的回答反映了這一事實...... –

+0

「何時是安全的時候」這句話表明,他真的是認真的,他寫的方式。 –