-
前兩個 ** 確實說陣列的長度是用變數定義的(稍後會詳細介紹),但黑匣子中的 ** 不是,這是取 arr 陣列的下標 i 的值並將其分配給 te - 這是乙個合法的操作,無論 c 還是 c++。 純 C 編譯器不允許變數定義陣列的長度,並且無法傳遞編譯。 後來的 C++ 編譯器允許這樣做,但大多數用於定義陣列長度的變數都應該用 const 修改,稱為值不變數,但純 C 編譯器不允許定義陣列的長度,即使變數用 const 修飾。
你說的“C和C++”都是允許的,可能是你的編譯器和C C++相容,很難遇到......現在的純 C 編譯器僅供參考。
-
variables can't define array length“不準確,應為”Variables without assignment can't define array length”。 您給出的圖 1 和圖 2 中的 n 在陣列定義之前分配了乙個值; 圖 3 沒有上下文,只有這一段**,我沒有看到任何錯誤。
至於陣列的儲存空間分配,可以是靜態的(根據軟體版本的不同,有的在編譯階段分配了**空間,有的在執行的初始階段由程序預先應用到系統中),也可以是動態的(程式執行到指定的**域中, 動態應用和發布)。
-
C99 標準確實允許可變長度陣列,目前 GCC 也支援它。
但是不支援C++標準(目前是C++17標準),因為它風險太大。
-
可變長度陣列 (VLA) 在 C99 中新增,並要求編譯器支援 C99 標準。
-
1.C語言不支援。
C++ 支援可變長度陣列(您可以執行自己的可變長度陣列和 alloca 函式),但由於它們實際上分布在堆疊上,因此不建議使用它們。 作為解決方案,您可以使用 C 樣式的 malloc 函式或 C++ new 函式在堆上動態分配記憶體,從而使長度完全可自定義。
2. C語言是一種通用的計算機程式語言,應用範圍很廣。 C 旨在提供一種程式語言,該語言可以以簡單的方式進行編譯,處理低階記憶體,生成少量機器程式碼,並且在沒有任何執行時支援的情況下執行。 雖然C語言提供了許多低階的處理功能,但它仍然保持了良好的跨平台特性,用標準規範編寫的C程式可以在許多計算機平台上編譯,包括一些嵌入式處理器(微控制器或MCU)和超級計算機。
3. 在陣列一章中,介紹了陣列的長度是預定義的,並且在整個程式中是固定的。 C 語言中不允許使用動態陣列型別。 例如,使用變數來表示長度並希望動態解釋陣列的大小是錯誤的。
但在實際程式設計中,這種情況經常發生,即所需的記憶體空間量取決於實際輸入資料,無法預先確定。 對於這類問題,用陣列很難解決。
4.為了解決上述問題,C語言提供了一些記憶體管理功能,可以根據需要動態分配記憶體空間,也可以使用不再使用的空間,這為有效利用記憶體資源提供了手段。 其他文獻"動態陣列",是指使用記憶體的應用和釋放函式,在程式執行過程中根據實際需要指定陣列的大小。 它本質上是乙個指向陣列的指標變數。
常用的記憶體管理函式有三種:malloc,分配記憶體空間的函式; 分配記憶體空間函式 calloc; 記憶體空間功能是免費的。
它是將 DAT 的值儲存在加法器位址上,注意它是乙個 16 位無符號數字。 >>>More