请教,为什么这段代码的 i 的值会是1呢?? |
答題得分者是:jow
|
zscy
一般會員 發表:1 回覆:2 積分:0 註冊:2007-09-17 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
對啊! 在我的電腦上怎麼是1242404!!!
哈, 我沒惡意, 要知道不要期待開發工具會幫你做得好好的, MyArray: Array[1..10,1..10] of Integer; 只幫你配置記憶體, 沒說要幫你做初始化的動作. 有些工作還是要自己處理. 試試下面程式碼: [code delphi] procedure TForm1.Button4Click(Sender: TObject); var MyArray: array of array of Integer; I: Integer; begin SetLength(MyArray, 10, 10); try I := MyArray[2,5]; ShowMessage(IntToStr(I)); finally MyArray := nil; end; end; [/code] 每次執行結果 I 都是 0, 表示說它有幫你做initial的動作^^ ===================引 用 zscy 文 章=================== var MyArray: Array[1..10,1..10] of Integer; I:Integer; begin I:=myarray[2,5]; showmessage(IntToStr(i)); end; 请教,为什么这段代码的 i 的值会是1呢??
編輯記錄
jow 重新編輯於 2007-10-07 15:36:59, 註解 無‧
|
zscy
一般會員 發表:1 回覆:2 積分:0 註冊:2007-09-17 發送簡訊給我 |
[code delphi] var MyArray: array of array of Integer; I: Integer; begin SetLength(MyArray, 10, 10); try I := MyArray[2,5];//其实我就不明白这里的2和5代表的是数组里面的什么数,赋给I后的值为什么又会是0呢,2和5是代表这数组的Index? ShowMessage(IntToStr(I)); finally MyArray := nil; end; end; [/code] |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
(1)靜態配置
var MyArray: array [1..10,1..10] of Integer; 這個動作是在宣告時,記憶體就已經配置好,可是沒有做初始化, 就是沒有填入某個數值(通常是零) (2)動態配置 var MyArray: array of array of Integer; 這個動作只宣告一個指向型態為Integer陣列的二維指標,宣告當時 並不會去配置陣列所要的記憶體. 在執行 SetLength(MyArray, 10, 10); 時才會要求系統配置, 此時系統會做以下動作: (a)配置陣列所需記憶體 (b)初始化->填 0 值 (c)傳回陣列在系統記憶體所在的位置, 指定給 MyArray. (1), (2)是不同的動作, 我要說的是寫程式時, 不要預設立場, compiler應該幫你做到 哪些事, 而是質疑它有沒有幫我做了; 數值還好, 如果在使用指標或物件變數(指標的 一種)時, 要隨時注意內含值的變化. |
zscy
一般會員 發表:1 回覆:2 積分:0 註冊:2007-09-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |