首頁 >後端開發 >C++ >如何在標準 C 中宣告可變大小的陣列?

如何在標準 C 中宣告可變大小的陣列?

Susan Sarandon
Susan Sarandon原創
2024-11-15 22:57:03622瀏覽

How Can I Declare an Array With a Variable Size in Standard C?

C 中可變數組大小的動態數組分配

可變大小的數組,也稱為動態數組,對標準C 提出了挑戰考慮以下程序:

<br>int 大小= 0;<br>int n = 0;<br>FILE* 圖片;<p>圖片= fopen("test.jpg", "r");<br>fseek(圖片, 0, SEEK_END) ; <br>大小= ftell(圖);</p><p>char Sbuf[大小];<br>fseek(圖片, 0, SEEK_SET); //到檔案的開頭<br>while (!feof(picture)) {</p><pre class="brush:php;toolbar:false">n = fread(Sbuf, sizeof(char), siz, picture);
/* ... do stuff with the buffer ... */
/* memset(Sbuf, 0, sizeof(Sbuf)); */

}

上面的程式碼嘗試分配一個字元數組,其大小由變數siz 決定。然而,在標準 C 中,陣列大小必須是常數。這就提出了一個問題:我們該如何正確聲明 siz 以允許程式碼編譯?

不幸的是,在標準 C 中沒有直接的方法來聲明具有可變大小的陣列。但是,有幾種替代方法:

  • std::vector: 在現代 C 中, std::vector 容器可以用作陣列。它可以輕鬆擴展到任何所需的大小,並且用法相對簡單。
  • 新運算子: new 運算子可用於在堆疊上動態分配記憶體。若要建立可變大小的數組,可以使用 char* Sbuf = new char[siz];在堆疊上分配一個 size 字元的陣列。然而,這種方法引入了記憶體管理問題(例如,潛在的記憶體洩漏),使其不如 std::vector 合適。

以上是如何在標準 C 中宣告可變大小的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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