首頁  >  文章  >  後端開發  >  如何在 C 中正確宣告具有動態大小的陣列?

如何在 C 中正確宣告具有動態大小的陣列?

Linda Hamilton
Linda Hamilton原創
2024-11-18 10:45:02587瀏覽

How Can You Correctly Declare an Array with a Dynamic Size in C?

當陣列大小可變時用C 動態建立陣列

考慮以下程式碼片段:

在這段程式碼中,我們的目標是讀取檔案「test.jpg」的大小並建立一個陣列Sbuf來儲存其內容。但是,Sbuf 的大小是根據檔案的大小動態決定的。這就提出了一個問題:我們該如何正確聲明 siz 以使程式碼編譯成功?

問題:C 中的可變長度數組

不幸的是,沒有直接的方法可以使用 a 創建數組C 中的可變長度。可變長度數組,也稱為靈活數組,不屬於 C 標準的一部分。因此,上面提供的程式碼將無法正確編譯。

替代解決方案

此問題有多種替代解決方案,每個方案都有自己的優點和缺點:

1。 std::vector

std::vector 是 C 語言中的標準函式庫容器,提供動態的類似陣列的資料結構。它根據需要自動分配和重新分配內存,無需手動聲明數組大小。以下程式碼示範如何在這種情況下使用 std::vector:

2. new Operator

另一個選擇是使用 new 運算子為陣列動態分配記憶體。然而,這種方法需要手動記憶體管理,增加了記憶體洩漏的風險。此外,通常建議對動態數組使用 std::vector 而不是直接記憶體分配。

3.外部庫

某些外部庫,例如 GNU C 庫 (glibc),提供對可變長度數組的支援。但是,此功能是非標準的,可能並非所有編譯器和平台都支援。

以上是如何在 C 中正確宣告具有動態大小的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn