[教學] Pointer I

看板NTUEE113HW作者 (湯米)時間16年前 (2009/11/11 01:20), 編輯推噓11(1104)
留言15則, 13人參與, 最新討論串1/1
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

11/11 01:23, , 1F
謝謝湯米老師!!
11/11 01:23, 1F

11/11 01:39, , 2F
謝謝湯米老師!!
11/11 01:39, 2F

11/11 05:21, , 3F
謝謝湯米老師!! 去玩瑪莉歐賽車嘛~
11/11 05:21, 3F

11/11 07:03, , 4F
謝謝湯米老師!! 大推認真有用文
11/11 07:03, 4F

11/11 10:02, , 5F
第2課呢(敲碗)
11/11 10:02, 5F

11/11 13:24, , 6F
謝謝湯米老師!! 樓上斷推了XD
11/11 13:24, 6F

11/11 14:18, , 7F
謝謝湯米老師!! 樓上不欺負長id
11/11 14:18, 7F

11/11 14:31, , 8F
謝謝湯米老師!! 不欺負長id是好人XD
11/11 14:31, 8F

11/11 19:06, , 9F
謝謝湯米老師!!
11/11 19:06, 9F

11/11 19:41, , 10F
我也有在玩~
11/11 19:41, 10F

11/11 21:06, , 11F
嘿嘿 樓上有機會來交流一下吧~
11/11 21:06, 11F

11/11 21:50, , 12F
樓上來陪我和三樓玩瑪莉歐賽車
11/11 21:50, 12F

11/13 12:13, , 13F
我剩板車喔XD
11/13 12:13, 13F

11/17 12:16, , 14F
清晰易懂
11/17 12:16, 14F

11/18 07:10, , 15F
湯米~~~你人好好喔!!
11/18 07:10, 15F
文章代碼(AID): #1A-Q3PjM (NTUEE113HW)