我有一個3D陣列int main[N][N][N]
,我需要創建具有int buf[N][N]
的節點結構。C變量等於或memcpy的
當是可以安全使用buf = main[index]
VS memcpy(buf,main[index],sizeof(main[index]));
?
我有一個3D陣列int main[N][N][N]
,我需要創建具有int buf[N][N]
的節點結構。C變量等於或memcpy的
當是可以安全使用buf = main[index]
VS memcpy(buf,main[index],sizeof(main[index]));
?
如果buf是一個指針,你不需要一個副本,它的安全使用=
。如果buf是已經分配的數組或指針,那麼如果您確實需要拷貝,通常會做什麼,然後memcpy
如果buf
是一個數組,那麼它不是左值。如果它不是一個左值,你永遠不能分配給它(語法錯誤)。
如果複製的存儲在C連續部分,memcpy
是安全的,可能不是通過複製元素做元素更加高效。之所以說memcpy
是潛在的更快,是因爲不同的CPU技巧可以用來複制比機器字大小的塊。然而,情況並非總是如此,因此分析將是您比較兩種選擇的唯一方法。
此外,您大概意思,比較了基於循環拷貝,而不是直接分配,因爲分配給數組變量是無效C.
他甚至沒有做元素複製。 –
我加入到我的回答反映了這一事實...... –
「何時是安全的時候」這句話表明,他真的是認真的,他寫的方式。 –
從不.........! –
我不認爲調用一個變量'main'是個好主意。你的編譯器是否真的吞下了它? – vsz