[問題] 想請問一下有關指標的問題

看板C_and_CPP作者 (阿達)時間14年前 (2011/05/08 21:03), 編輯推噓0(0027)
留言27則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C/C++(經過visual studio 2010執行過) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 想請問一下為什麼會輸出這四個數值 第一個數值我是了解 但是為什麼**pptr會和*ptr指向同一個位置 而且陣列的第二個數值,也就是200竟然會沒有改變? 餵入的資料(Input): 輸出的結果(Expected Output): 99 200 200 200 程式碼(Code):(請善用置底文網頁, 記得排版) http://pastie.org/1877866 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.218.111

05/08 21:07, , 1F
**pptr和*ptr沒有指向同一個位置
05/08 21:07, 1F

05/08 21:09, , 2F
可是為什麼輸出的兩個值都是一樣的@@?
05/08 21:09, 2F
※ 編輯: andrewhanks 來自: 140.123.218.111 (05/08 21:11)

05/08 21:12, , 3F
你寫int * pptr;後面卻要印printf("%d\n", **pptr);
05/08 21:12, 3F

05/08 21:13, , 4F
不知道要你印出什麼東西出來
05/08 21:13, 4F

05/08 21:14, , 5F
突然發現你可能有打錯
05/08 21:14, 5F

05/08 21:14, , 6F
寫錯了 讓我改一下@@
05/08 21:14, 6F
※ 編輯: andrewhanks 來自: 140.123.218.111 (05/08 21:15)

05/08 21:23, , 7F
pptr--;會指向記憶體中不知道的何方
05/08 21:23, 7F

05/08 21:26, , 8F
小則出錯大則當機,輕則扣分,大則重修
05/08 21:26, 8F

05/08 21:29, , 9F
問題是這樣寫的話*ptr和**pptr的值竟然都會一樣
05/08 21:29, 9F

05/08 21:30, , 10F
這是令我很困惑的地方
05/08 21:30, 10F

05/08 21:30, , 11F
樓上,但是pptr--後,*pptr的值是ptr的位置
05/08 21:30, 11F

05/08 21:32, , 12F
而且第一行執行完後200竟然也沒有+1這也令我不解
05/08 21:32, 12F

05/08 21:33, , 13F
05/08 21:33, 13F
※ 編輯: andrewhanks 來自: 140.123.218.111 (05/08 21:34)

05/08 21:34, , 14F
++的執行似乎是優先於星號*
05/08 21:34, 14F

05/08 21:34, , 15F
第10行200沒加1的原因是運算子的優先權
05/08 21:34, 15F

05/08 21:34, , 16F
所以**pptr++ 實際上跟pptr++一樣..
05/08 21:34, 16F

05/08 21:35, , 17F

05/08 21:35, , 18F
因此你++又--, 讓pptr根本沒動過...所以才會一樣
05/08 21:35, 18F

05/08 21:36, , 19F
請各位大大看看上面程式碼,*pptr==ptr 一直成立
05/08 21:36, 19F

05/08 21:37, , 20F
@TsinTA: 可是如果pptr一直沒動那應該輸出的是array[0]
05/08 21:37, 20F

05/08 21:37, , 21F
才對不是嗎?
05/08 21:37, 21F

05/08 21:39, , 22F
除了pptr++後 *pptr!=ptr
05/08 21:39, 22F

05/08 21:39, , 23F
而ptr++時,為何pptr也++?
05/08 21:39, 23F

05/08 21:43, , 24F
因為pptr存的是ptr的位置..
05/08 21:43, 24F

05/08 21:45, , 25F
ptr不管存的位置怎麼動...pptr永遠指向ptr
05/08 21:45, 25F

05/08 21:45, , 26F
想通了,謝謝TsinTA大
05/08 21:45, 26F

05/08 21:46, , 27F
感謝各位~~
05/08 21:46, 27F
文章代碼(AID): #1DnfIxY8 (C_and_CPP)