NTUEE113HW 板


LINE

這次來講 pointer 和 array 的關係 首先有一個奇妙的故事 array 某種程度上就是 pointer 但並不是完完全全地是 pointer 為什麼我會這樣說呢? 因為在 pointer 和 array 之間有某種奇妙的關連 array 的名字就是 pointer 舉個例子吧 int s[20]; 如果我們要問 s[0] 的 address 是多少? 很簡單,就是 &s[0] 不過還有另一種寫法,就是 s 。對,你沒看錯,就是 s 所以你可以 cout<<s 和 cout<<&s[0] 看看 就會發現結果是一樣的。 然後補一點 array 的觀念 當你宣告了一個 array ,ex: int s[20]; 就代表你 allocate 了連續的一段 memory 。 然後 每一個陣列的元素所佔的大小是 4 bytes ( 因為 int 佔了 4 bytes ) 那 指標的運算是怎麼一回事? 例如 int s[5] = {10, 20, 30, 40, 50}; int *p = s; // 這行也可以寫成 int *p = &s[0]; cout<<*p; *p 大家應該馬上看得出來就是 s[0], p 就是 &s[0] 或 s 上面也有說過了 那 … *(p+1) 是什麼呢? XD 答案是 p[1] 也就是 20 原因就在剛剛說的 array 在 memory 中是一段連續的空間 (空間這個詞有點不太好 = =) 所以這裡正式的講一下指標的加法 (減法) p 是一個 int 的 pointer p+i 代表的是一個 address , 這個 address 剛好是 p 的 address 加上 4*i 這裡的 4 是 int 的 4 bytes, 如果你的 p 是 char* 那就變成 1 而不是 4 於是如果 p 指向的是一個 array , int s[5]; p 的 address 加了 4*i 之後 會剛好跑到 s[i] 的 address 也就是 &s[i] 以上有點難懂= = 所以 for(int i=0;i<5;i++) cout<<s[i]<<endl; 可以寫成 for(int i=0;i<5;i++) cout<<*(p+i)<<endl; 然後 p 當然也可以指向 array 中任一個元素 例如 : int s[5],*p; p = &s[2]; *p 就是 s[2], *(p+1) 就是 s[3] , *(p-1) 就是 s[1] 所以 要印出 整個 s 陣列 可以寫成 for(int i=-2;i<3;i++) cout<<*(p+i)<<endl; 科科 然後 奧妙的來了 剛剛說過某種程度上 pointer 和 array 是一樣的 所以還有另一種寫法是這樣的 *p 其實 就是 p[0] *(p+i) 就是 p[i] 所以上面也可以寫成 for(int i=-2;i<3;i++) cout<<p[i]<<endl; 最後,有一個超ㄉㄧㄠˋ詭的東西 就是像這樣 int s[20],*p; cout<<s<<endl; cout<<&s<<endl; cout<<&s[0]<<endl; //以上三行是一樣的!! 不要問我為什麼= = 好 我又懶得打了 大家期中考加油 我要去吃午餐了 -- ╭═══╤═══╮ ╰═╮ ╭═╯ │ │ │╭═和平,土地,麵包═╮ │ │ │ ╭═╧╧╮╤═╤═╮═╤═╤╧╮ │ │ │ │ ││ │ │ │ │ │ ╰═╤═╯ │ │ ││ │ │ │ │ │ │ ╰╧╯╰═══╯╰ ╰ ╰ ╰ ╰ ╰ ─╯ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.239.191 ※ 編輯: TommyKSHS 來自: 140.112.239.191 (11/11 11:40)
1F:推 e2167471:看來不收不行了 11/11 11:53
2F:推 wind42:感謝湯米計程大神 11/11 12:03
3F:推 tw00088437:湯米計程大神 11/11 12:16
4F:推 phisixersai:第3課呢(敲碗) 11/11 12:19
5F:推 tw00088437:湯米別吃午餐 呼叫毛毛蟲? 11/11 12:20
6F:推 b98901056:pointer在memory裡面應該是eip吧?那後面那中括號是否為 11/11 12:37
7F:→ b98901056:eip的offset?? 湯米大神幫我解惑吧~ 11/11 12:37
8F:→ TommyKSHS:抱歉我跟計概這方面不熟 Orz 我對程式語言比較熟 XD 11/11 14:06
9F:推 b98901056:喔喔 謝謝嚕XD 因為我本來是學assembly的..C+菜鳥 11/11 14:30
10F:→ TommyKSHS:其實我一直很想學 assembly 的說 XD 11/11 14:51
11F:推 b98901056:呵呵 雖然我學的目的不單純= =+ 11/11 14:53
12F:推 Ross0916:不是 EIP 唷,通常是 ESI/EDI 11/11 17:01
13F:推 b98901056:恩恩 有去問過了 還是謝謝樓上XD 11/11 18:34
14F:推 tomap41017:感謝湯米計程大神 11/11 19:10
15F:推 bcddivad:感謝湯米計程大神 感謝樓上上上助教解惑! 11/11 19:43
16F:推 breeze4103:我覺得可以常常PO也 我很需要!! 11/11 20:11
17F:推 phisixersai:對呀,別考試前才PO嘛 11/11 21:20
18F:→ phisixersai:會來不及讀XD 11/11 21:20
19F:→ TommyKSHS:可是我是覺得 pointer 新手可能比較不好懂我才PO耶 XD 11/11 21:30
20F:推 acsa:有沒有要PO跑跑卡丁車攻略的打算?XD 11/11 22:09
21F:推 cktigeryang:基於湯米太宅,有問題的可以追尋緣分直接來問我 11/11 22:39
22F:→ TommyKSHS:樓上加油 11/11 22:45
23F:推 User999:P.S. 上機試了一下 p = &s;編譯不會通過喔! 多謝解惑! 11/11 22:55
24F:→ TommyKSHS:阿囧 我寫錯了…我改一下。 11/11 23:33
※ 編輯: TommyKSHS 來自: 140.112.239.191 (11/11 23:34)
25F:推 storym94374:硍...我居然沒有在考前看到這篇 11/12 04:57
26F:推 erichsueh:湯米好厲害阿~~~~~~ 11/12 09:56
27F:→ asdf333:活動企劃師協辦享企劃案免費批閱http://ppt.cc/ROwx 11/12 12:11
28F:推 henrychang3:推卡丁車~~ 11/14 23:39
29F:推 joyce113:感謝湯米大神~~~ 11/15 10:51
30F:推 sciencepie:清晰易懂 11/17 12:16
31F:推 breeze4103:Tommy~~~我的pointer分數都你給的XDDD 11/18 07:16
32F:推 xup65p4:有看有推XD 12/01 17:18







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP