動態陣列宣告,使用const與指標疑問 |
答題得分者是:daldal
|
stwave
一般會員 發表:9 回覆:9 積分:3 註冊:2005-03-29 發送簡訊給我 |
請問各位先進:
如下程式碼,想使用於動態宣告結構陣列,卻行不通。 後來測試過才發現原來陣列宣告也是如此..並非使用結構陣列才不行.. 以下為正常宣告,搜尋看了大部份文章的動態陣列宣告都是如此,測試可行。 [code cpp] const int row = 5; const int column = 10; int arr[row][column]; [/code] 如下則會產生錯誤訊息:E2313 Constant expression required [code cpp] int row = 5; int column = 10; const int *rowC = &row; const int *columnC = &column; int arr[row][column]; [/code] 因為在程式中會經常使用到陣列存值計算,並且有時會有上千筆以上的資料。 不想將陣列大小直接定義很大,故想說透過const與指標的方式。 這樣可直接改變row與column變數的值,再建立符合資料比數的陣列大小。 不知是否這樣的構想本身就行不通還是有怎樣的觀念需要再釐清。 謝謝各位的閱讀。 |
daldal
高階會員 發表:6 回覆:102 積分:226 註冊:2007-06-18 發送簡訊給我 |
int arr[row][column]; <<--這是靜態宣告陣列喔,一但程式編譯後就不會再變更了
至於動態的方式有許多種類,簡單的如下 宣告 [code cpp] int Row = 10; int Col = 30; int **arr; arr = new int*[Row]; for(int i=0; i 釋放 [code cpp] for(int i=0; i [/code] arr的使用方式與你靜態宣告的相同 **記得重新建立新的陣列時,不要忘了清掉舊的陣列** 如果建立新陣列的時候需要重新複製舊資料 為了避免二維資料連續性的問題 可以使用前輩們已經有封裝好的函式 下面蕭大的純C版本,或是用Template版本 ps: 若是有一些插入、移除、分析、重排序的動作 (通常是用在個數不定時) 也可以考慮稍微複雜一點的 vector, list ... 但是建議你先把買一本書來k一下觀念 把簡單的先弄清楚喔 |
stwave
一般會員 發表:9 回覆:9 積分:3 註冊:2005-03-29 發送簡訊給我 |
感謝您的指導!
參照以上方式,來使用結構陣列。 但這樣創出來的結構陣列大小不知是否正確。 因為填值填不進去... ---------------------------------------------------------- OK了!使用程式如下.. [code cpp] struct Array { String Temp; double ValueA; double ValueB; }; int ArrayNum = 10; Array *m_Array = new Array[ArrayNum]; delete [] m_Array; [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |