[問題] 請教一題pointer的問題

看板C_and_CPP (C/C++)作者 (梅茲 ~(・ε・`))時間6年前 (2019/04/30 18:28), 6年前編輯推噓6(6015)
留言21則, 8人參與, 6年前最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 這是寫紙本考卷上的題目,所以上面那幾項不知道要寫什麼orz 如果有發文問題還請不吝指正 題目:假設a,b,c三變數分別存放在記憶體位置5000,6000,7000 1.int a = 35; 2.int *b = &a; 3.int **c = &b; 試求b , c , *c , **c , &c 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) 補充說明(Supplement): **c 和 &c 搞不清楚到底要怎麼看 如果這樣發文格式有誤還有請各位提出,謝謝 --

05/06 02:56,
不是我
05/06 02:56

05/06 03:04,
就是你
05/06 03:04

05/06 03:05,
不可能
05/06 03:05

05/06 03:06,
納智捷
05/06 03:06
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.114.181.124 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1556620116.A.F34.html

04/30 20:15, 6年前 , 1F
35 7000
04/30 20:15, 1F

04/30 20:15, 6年前 , 2F
c是pointer to pointer 那做兩次dereference會是?
04/30 20:15, 2F

04/30 20:17, 6年前 , 3F
&操作放在=右邊又是代表?
04/30 20:17, 3F

04/30 21:08, 6年前 , 4F
請問一下**c的含意是甚麼?是指向*c嗎?
04/30 21:08, 4F

04/30 21:23, 6年前 , 5F
是一個指向指標的指標 名字叫做c
04/30 21:23, 5F

04/30 21:35, 6年前 , 6F
畫個圖就會比較好了解 名稱(內容)-位址
04/30 21:35, 6F

05/01 22:39, 6年前 , 7F
5000 6000 6000 35 7000 ?
05/01 22:39, 7F

05/03 20:56, 6年前 , 8F
5000 6000 5000 35 7000才對
05/03 20:56, 8F

05/04 12:11, 6年前 , 9F
去了解一下 複雜變數宣告的判讀方式會比較清楚 google搜
05/04 12:11, 9F

05/04 12:11, 6年前 , 10F
尋一下understand complicated declaration之類的
05/04 12:11, 10F

05/04 12:29, 6年前 , 11F
b是一個指標指向一個int a的位址 c是一個指標指向一個int
05/04 12:29, 11F

05/04 12:29, 6年前 , 12F
* b的位址 不加任何*或&的狀況下就是印出那個變數本身
05/04 12:29, 12F

05/04 12:29, 6年前 , 13F
存的data. 加*(dereference)就是把那個data視作address
05/04 12:29, 13F

05/04 12:30, 6年前 , 14F
去取那個address內的data. **就是取兩次而已 *c是把c
05/04 12:30, 14F

05/04 12:30, 6年前 , 15F
所存的b位址視為位址然後取該位址的data也就是a的位址。
05/04 12:30, 15F

05/04 12:30, 6年前 , 16F
*(*c)就是再進一步把a的位址視為位址取該位址的data
05/04 12:30, 16F

05/04 12:30, 6年前 , 17F
也就是35
05/04 12:30, 17F

05/10 13:53, 6年前 , 18F
&c = memory address of c = 7000
05/10 13:53, 18F

05/10 13:53, 6年前 , 19F
c = &b = memory address of b = 6000
05/10 13:53, 19F

05/10 13:53, 6年前 , 20F
*c = *(&b) = b = &a = memory address of a = 5000
05/10 13:53, 20F

05/10 13:54, 6年前 , 21F
**c = *(&a) = a = value of a = 35
05/10 13:54, 21F
感謝各位大大的協助! ※ 編輯: mazz (218.173.173.62), 05/12/2019 13:36:33
文章代碼(AID): #1So2DKyq (C_and_CPP)
文章代碼(AID): #1So2DKyq (C_and_CPP)