數組大小必須是常數:「表達式必須有常數值」
在C 中初始化數組時,必須知道數組大小在編譯時。這表示數組的行維和列維的值必須是常數表達式。
考慮以下範例:
int row = 8; int col = 8; int [row][col]; // error: expression must have a constant value
在此程式碼中,宣告數組時未指定變數名稱。此外,row 和 col 變數不是常數,因此編譯器無法在編譯時確定陣列的大小。這會導致“表達式必須具有常數值”錯誤。
動態分配數組
要建立動態大小的數組,必須使用在堆上分配記憶體新的運營商。必須使用delete釋放分配的內存,以防止內存洩漏。
// Allocate the array int** arr = new int*[row]; for (int i = 0; i < row; i++) arr[i] = new int[col]; // Use the array // Deallocate the array for (int i = 0; i < row; i++) delete[] arr[i]; delete[] arr;
固定大小數組
對於固定大小數組,行和列維度必須被宣告為 const:
const int row = 8; const int col = 8; int arr[row][col];
以上是為什麼 C 需要常數數組大小:「表達式必須具有常數值」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!