線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1520
推到 Plurk!
推到 Facebook!

矩陣空間參數問題

答題得分者是:harpist
033614477
一般會員


發表:10
回覆:8
積分:3
註冊:2006-11-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-17 14:56:48 IP:140.126.xxx.xxx 訂閱
請問如果我今天想去寫一個矩陣 但是空間大小會隨著某值變化  
我的作法是是一開先設定 int a int b (讓他為全域變數) 然後再Button1 裡面去給定a a=3 b=3*3
之後再Button2裡面做一些運算 可是當我寫 double c[a]={0} ; double d[b]={0}; 他會出現下面這個訊息
Constant expression required
請問一下我是哪邊錯了
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-17 15:03:31 IP:122.124.xxx.xxx 未訂閱
要以動態配置記憶體的方式(C :new/delete, C:malloc/free)才能達到你的目的
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-17 15:32:53 IP:59.104.xxx.xxx 未訂閱
訊息是告訴你要這樣宣告你陣列長度a、b必須是常數
<textarea class="cpp" rows="10" cols="60" name="code">const int a = 3; const int b = 3*3; double c[a] = {0.0}; double d[b] = {0.0}; </textarea>

如果你要動態決定陣列長度必須使用指標的方式。
<textarea class="cpp" rows="10" cols="60" name="code">int a = 3; int b = 3*3; double *c = new double[a]; double *d = new double[b]; delete[] c; delete[] d;</textarea>

------
~§~迷時師渡,悟了自渡~§~
033614477
一般會員


發表:10
回覆:8
積分:3
註冊:2006-11-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-17 16:19:51 IP:140.126.xxx.xxx 訂閱
再問個問題 那當我Form Close的時候 是不是要delete []c 跟[]d 如果是的話 那不delete 有啥差呢
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-17 17:38:51 IP:59.104.xxx.xxx 未訂閱
當你在記憶體配置空間來使用,不需要用時當然要歸還。
如果您的程式在持續執行過程中若大量使用new而沒有適當的使用delete的話,
由於空間一直沒有歸還,最後將導致整個記憶體空間用盡。

===================引 用 033614477 文 章===================
再問個問題 那當我Form Close的時候 是不是要delete []c 跟[]d 如果是的話 那不delete 有啥差呢
------
~§~迷時師渡,悟了自渡~§~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-17 19:10:28 IP:220.131.xxx.xxx 未訂閱
補充插花一句。
不過一個良好的作業系統,會在你離開程式時。自動幫你回收你 new, alloc 用掉的記憶體。
但是在這個程式存活期間。它並不會主動幫你這樣做。

===================引 用 harpist 文 章===================
當你在記憶體配置空間來使用,不需要用時當然要歸還。
如果您的程式在持續執行過程中若大量使用new而沒有適當的使用delete的話,
由於空間一直沒有歸還,最後將導致整個記憶體空間用盡。

===================引 用 033614477 文 章===================
再問個問題 那當我Form Close的時候 是不是要delete []c 跟[]d 如果是的話 那不delete 有啥差呢
033614477
一般會員


發表:10
回覆:8
積分:3
註冊:2006-11-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-17 19:31:25 IP:140.126.xxx.xxx 訂閱
板大所謂的包含XP嗎@@   我不是懶得delete  只是因為我用到蠻多new的 怕少delete 會讓我的程式出錯=.=
===================引 用 暗黑破壞神 文 章===================
補充插花一句。
不過一個良好的作業系統,會在你離開程式時。自動幫你回收你 new, alloc 用掉的記憶體。
但是在這個程式存活期間。它並不會主動幫你這樣做。

===================引 用 harpist 文 章===================
當你在記憶體配置空間來使用,不需要用時當然要歸還。
如果您的程式在持續執行過程中若大量使用new而沒有適當的使用delete的話,
由於空間一直沒有歸還,最後將導致整個記憶體空間用盡。

===================引 用 033614477 文 章===================
再問個問題 那當我Form Close的時候 是不是要delete []c 跟[]d 如果是的話 那不delete 有啥差呢
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-05-17 19:35:42 IP:211.22.xxx.xxx 未訂閱
也插個花~
那就養成良好的寫作風格,把危險區塊程式碼用 try...catch與 try..__finally包起來,就可以減少錯誤發生。
===================引 用 033614477 文 章===================
板大所謂的包含XP嗎@@ 我不是懶得delete 只是因為我用到蠻多new的 怕少delete 會讓我的程式出錯=.=
===================引 用 暗黑破壞神 文 章===================
補充插花一句。
不過一個良好的作業系統,會在你離開程式時。自動幫你回收你 new, alloc 用掉的記憶體。
但是在這個程式存活期間。它並不會主動幫你這樣做。

===================引 用 harpist 文 章===================
當你在記憶體配置空間來使用,不需要用時當然要歸還。
如果您的程式在持續執行過程中若大量使用new而沒有適當的使用delete的話,
由於空間一直沒有歸還,最後將導致整個記憶體空間用盡。

===================引 用 033614477 文 章===================
再問個問題 那當我Form Close的時候 是不是要delete []c 跟[]d 如果是的話 那不delete 有啥差呢
系統時間:2024-11-25 11:34:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!