返回列表 發帖

什麼是指標?

本帖最後由 tonyh 於 2014-8-30 18:57 編輯

對於指標,網路上發現一個很不錯的解說:
http://tw.knowledge.yahoo.com/question/question?qid=1306040911737

一、變數

每個變數都有一個位址‧舉例:每個變數就像一棟棟房子,房子內可以裝東西,每間房子(變數)都有門牌號碼(位址),有了門牌號碼(位址)才知道要去哪理放東西跟取東西‧
你可以自由選擇要住哪間房子,就如同變數可以放入任何資料,可以變更‧但門牌號碼則是國家統一給的,就如同變數的位址是由電腦決定的,不能變更‧

int x;      //宣告變數x

則:

x = 這個變數內的東西,由使用者自由決定其值
&x = 這個變數的位址,由電腦決定其值,位址是唯一的,且是由系統決定,不能任意變更

二、指標變數

指標變數:專門存放位址的變數

int *ptr;   //宣告指標變數
ptr=&x;    //將變數x的位址指派給指標變數ptr

則:

ptr = 變數x的位址
*ptr = 該位址內的東西‧(可以視為一個變數)
&ptr = 指標的位址‧(&ptr是指標的位址,牽扯到指標的指標,不在此討論)

簡單的說就是:

如果 ptr = &x;
則 *ptr = x;

三、指標要做什麼

有時候,物件內容可能很大,佔用非常多的記憶體,例如一個影像,如果把這個影像傳來傳去的去做分析處理,會耗很大的時間,因此,如果有一個指標,指向這個物件,那麼只要傳指標就好,不須要整個物件移動‧可以加快處理速度與效能‧這是最顯而易見的優點‧

舉個實際生活的例子,假設你的房子需要重新裝潢,你會把整間房子搬去裝潢公司嗎?我想不會這樣做的‧應該是打個電話,把家裡地址告訴裝潢公司,他們直接派人過來處理‧

返回列表