全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1015
推到 Plurk!
推到 Facebook!

指標的問題

答題得分者是:小傑克
tokiama
一般會員


發表:34
回覆:60
積分:23
註冊:2009-04-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-10-04 12:21:16 IP:220.140.xxx.xxx 訂閱
老師跟我們說指標是一個很好很好用的東西,所以叫我們回去自己研究。

所以在下去研究了。

可是...

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
var A:^integer;
begin
A^:=2;
end;
[/code]

Button1一按下去就出現紅色差差...這是為什麼?

我只是先宣告A為指標,指像Integer的指標,然後讓A所指到的東西裡面的值為2。

不做顯示動作,這樣按下Buttom1應該不會有任何問題啊?

有誰可以教一下?
編輯記錄
tokiama 重新編輯於 2009-10-04 12:21:55, 註解 無‧
tokiama 重新編輯於 2009-10-04 12:22:52, 註解 無‧
小傑克
資深會員


發表:5
回覆:209
積分:357
註冊:2009-02-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-10-05 00:12:31 IP:59.115.xxx.xxx 訂閱
就我的認知 
var a:^integer; 是宣告一個integer的指標 而不是一個integer
差別在var b: integer ; delphi會幫你準備一個位置來存這個數字,並且有一個指標來指到這個數字
希望下面的sample能將我的意思更容易理解


var a:^integer; //宣告一個數字型態的指標A, 這種寫法編譯器沒有自動幫你生一塊實體儲存數字的記憶體
b:integer; //宣告一個數字(取得一個實體儲存數字的記憶體 & 這塊記憶體的指標B)
begin
b := 3; // 將3存到實體儲存數字的記憶體中
a := @b; //將A = 3的指標(也就是B)
ShowMessage(IntToStr( b));
a^ := 10; // 將a指向的記憶體,也就是原來B所指的實體儲存數字的記憶體內容改成10
ShowMessage( IntToStr(a^));
ShowMessage(IntToStr( b)); //當然B也就變成10


==================引 用 tokiama 文 章===================
老師跟我們說指標是一個很好很好用的東西,所以叫我們回去自己研究。

所以在下去研究了。

可是...

[code delphi]
procedure TForm1.Button1Click(Sender: TObject);
var A:^integer;
begin
A^:=2;
end;
[/code]

Button1一按下去就出現紅色差差...這是為什麼?

我只是先宣告A為指標,指像Integer的指標,然後讓A所指到的東西裡面的值為2。

不做顯示動作,這樣按下Buttom1應該不會有任何問題啊?

有誰可以教一下?

------
額有朝天骨,眼中有靈光
tokiama
一般會員


發表:34
回覆:60
積分:23
註冊:2009-04-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-10-05 23:24:58 IP:220.140.xxx.xxx 訂閱
謝謝。

雖然不知指標的好用處...Orz
系統時間:2024-05-17 4:39:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!