看板 NTUEE113HW 關於我們 聯絡資訊
Pointer ( 指標 ) 指標也是一種變數,只不過指標所儲存的並不是像一般的變數所儲存的東西。 它所儲存的是「位址」 ( Address )。先扯開一下,什麼是 address 呢? 所有的變數 ( 包含 pointer, reference ) 在記憶體中一定會有它們「住」的地方。 先來看看怎麼宣告 pointer datatype *ptr; //其中 datatype 為任一種變數型態 ( ex: int, float, char, int*, ... ) 例如: int *iptr; int* iptr; //請注意,這兩種寫法是等價的。 然後 datatype* 只能儲存 datatype 型態的變數的 address。 簡單來說,女宿的房號所代表的房間住的一定是女生; 而男宿…不在討論範圍之內= = 那怎麼指定 address 給 pointer 呢? 宣告時: int a = 19; int *iptr = &a; 非宣告時: iptr = &a; 來說一下, & 是一個 operator ( 運算子,算符 ) 他的功能是「取址」 ,也就是取得一個變數的位址 簡單來說,就是有人對你執行了 問你:「 你家住哪?」 這個動作。 於是 &a 代表的就是 a 的 address 這樣上面的指定動作應該比較好懂吧 XD 然後, pointer 的操作有另一個 operator,就是 * * 的意義是「取值」,也就是有人去照著 pointer 上的地址去敲門問: 「裡面住誰?」 這樣的動作。 來個例子: int a = 10; int *iptr = &a; cout << a; // 這是 a 的數值,也就是 10 cout << &a; // 這是 a 的位置,毎次開機會不一樣= = cout << iptr; // 這是 iptr 所儲存的東西,也就是 a 的位置 cout << *iptr;// 這是對 iptr 取值,也就是問 iptr 所代表的那個位置 // 存的數值是什麼。 舉個廖婉君上課問過的問題 &*iptr 和 *&iptr 一樣還是不一樣? 答案是:一樣。 理由:從上面的解釋,不難發現 * 和 & 互為反函數吧 XD 然後我懶得打了= = 我要去玩跑跑卡丁車了~ -- ╭═══╤═══╮ ╰═╮ ╭═╯ │ │ │╭═和平,土地,麵包═╮ │ │ │ ╭═╧╧╮╤═╤═╮═╤═╤╧╮ │ │ │ │ ││ │ │ │ │ │ ╰═╤═╯ │ │ ││ │ │ │ │ │ │ ╰╧╯╰═══╯╰ ╰ ╰ ╰ ╰ ╰ ─╯ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.239.191
bcddivad:謝謝湯米老師!! 11/11 01:23
tw00088437:謝謝湯米老師!! 11/11 01:39
storym94374:謝謝湯米老師!! 去玩瑪莉歐賽車嘛~ 11/11 05:21
xup65p4: 謝謝湯米老師!! 大推認真有用文 11/11 07:03
phisixersai:第2課呢(敲碗) 11/11 10:02
schimtag168: 謝謝湯米老師!! 樓上斷推了XD 11/11 13:24
lttlstrngth: 謝謝湯米老師!! 樓上不欺負長id 11/11 14:18
b98901056: 謝謝湯米老師!! 不欺負長id是好人XD 11/11 14:31
tomap41017:謝謝湯米老師!! 11/11 19:06
toshiba011:我也有在玩~ 11/11 19:41
TommyKSHS:嘿嘿 樓上有機會來交流一下吧~ 11/11 21:06
tw00088437: 樓上來陪我和三樓玩瑪莉歐賽車 11/11 21:50
toshiba011:我剩板車喔XD 11/13 12:13
sciencepie:清晰易懂 11/17 12:16
breeze4103: 湯米~~~你人好好喔!! 11/18 07:10