簡體   English   中英

我如何(深)復制C中的數組?

[英]How do I (deep) copy an array in C?

參考http://www.devx.com/tips/Tip/13291 ,它說我可以使用memcpy來復制大小由sizeof()決定,但是,不是指向指針的數組嗎?

除了遍歷數組之外,我如何使用memcpy深度復制數組?

謝謝!

在鏈接的例子int weekly_hours[5][5]; 為25個整數分配空間。 沒有進一步的間接,因此您可以安全地使用memcpy來復制它的值。

連續分配多維數組。 一個指針數組(指針......)是一個不同的東西(每個子指針應該自己分配/復制/釋放)。

不要因為在大多數情況下可以互換使用一維數組和單個指針這一事實而感到困惑,因為它們在技術上並不相同。

希望能夠澄清一些困惑:

  • 數組是分配的相鄰存儲器單元的塊。
  • 數組變量名稱可以轉換(“衰減”)到指向數組的第一個元素的指針,但不是相反。 每次在指針算術中使用數組變量名時,都會隱式完成此操作。
  • 您可以對任何靜態分配的數組的變量名使用sizeof()運算符,以獲取數組中的字節數。 如果在靜態分配的多維數組上使用sizeof(),則同樣適用。
  • 如果在指針上使用sizeof()運算符,則將獲得指針的大小(即32位計算機上的4個字節)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM