考慮以下程式碼片段:
在這段程式碼中,我們的目標是讀取檔案「test.jpg」的大小並建立一個陣列Sbuf來儲存其內容。但是,Sbuf 的大小是根據檔案的大小動態決定的。這就提出了一個問題:我們該如何正確聲明 siz 以使程式碼編譯成功?
不幸的是,沒有直接的方法可以使用 a 創建數組C 中的可變長度。可變長度數組,也稱為靈活數組,不屬於 C 標準的一部分。因此,上面提供的程式碼將無法正確編譯。
此問題有多種替代解決方案,每個方案都有自己的優點和缺點:
std::vector 是 C 語言中的標準函式庫容器,提供動態的類似陣列的資料結構。它根據需要自動分配和重新分配內存,無需手動聲明數組大小。以下程式碼示範如何在這種情況下使用 std::vector:
另一個選擇是使用 new 運算子為陣列動態分配記憶體。然而,這種方法需要手動記憶體管理,增加了記憶體洩漏的風險。此外,通常建議對動態數組使用 std::vector 而不是直接記憶體分配。
某些外部庫,例如 GNU C 庫 (glibc),提供對可變長度數組的支援。但是,此功能是非標準的,可能並非所有編譯器和平台都支援。
以上是如何在 C 中正確宣告具有動態大小的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!