看板 C_and_CPP 關於我們 聯絡資訊
: ---------------------------------------- : #include<iostream> : using namespace std; : int main(){ : int count; : while(cin>>count){ : int array[count][3];
killntd:不懂我的問題出在哪... 冏11/05 19:50
首先,你的這個 array 明明放的是 count*4 的資料 如你舉的例子,count=2時,你會輸入的是 1 2 3 4 5 6 7 8 那這樣那個 int array[count][3]; 就錯了 至少也要是 int array[count][4]; 才夠用 接下來,目前 C++ 在宣告 array 的時候,中括號 [這裡] 只能擺固定的常數 譬如說以下幾種寫法: (1) int array[10][4]; (2) #define NUM 10 int array[NUM][4]; (3) const int NUM = 10; int array[NUM][4]; 但 C++ 目前還不允許 [這裡的值] 是一個會改變的變數 譬如你寫的 int count; cin >> count; int array[count][3]; 這個 count 會隨著使用者的輸入而改變,而影響 array 實際的大小 這個東西叫做 VLA(Variable length array) 目前的C++還不支援它,因此不要亂用,會發生什麼事情沒人會知道 (在Visual Studio 2010會直接吐出編譯錯誤) 如果你希望你的陣列,是能夠隨著使用者的輸入而改變大小的 在C++請使用new來做動態配置,或者使用vector這樣的動態容器 譬如可變長度的一維陣列,你應該要這麼寫: int count; cin >> count; int *array = new int[count]; // 當然使用後請記得用 delete 釋放空間 至於我所給的,就是可變長度二維版的寫法 相關資料可以爬文「動態二維」,有許多討論 而vector的用法,你可以上網搜尋,或者翻閱手上的書 我就偷懶不說明囉 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46