[問題] 又是一個指標問題= =...

看板C_and_CPP作者 (改名Dirk_AI56)時間8年前 (2016/02/19 23:44), 8年前編輯推噓4(409)
留言13則, 6人參與, 最新討論串1/1
void getMem(char **ptr) { printf("%0x\n",*&ptr); //printf("%0x\n",&*ptr); } main() { char *str = "abc"; printf("%0x\n",&str); getMem(&str); } 結果: 22fe48 22fe48 測試印出位址, 可是為什麼副程式那行*&ptr 和 &*ptr 結果是一樣的?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.121.31.79 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1455896646.A.E6A.html

02/19 23:53, , 1F
&v為取出v的記憶體位置。*v為得到記憶體位置v的object
02/19 23:53, 1F

02/20 03:31, , 2F
*&ptr = ptr = &str; &*ptr = &*&str = &str
02/20 03:31, 2F

02/20 03:42, , 3F
一個變數的位址裡的值就是該變數的值
02/20 03:42, 3F

02/20 04:15, , 4F
指標的值是位址,一個指標的值的位址就是該指標的值
02/20 04:15, 4F

02/20 05:03, , 5F
副程式參數為字串的第一個字元的位址,所以*&ptr為記
02/20 05:03, 5F

02/20 05:04, , 6F
憶體位址.又&*ptr為第一個字元的值然後又取位址,所
02/20 05:04, 6F

02/20 05:04, , 7F
以兩者相等
02/20 05:04, 7F

02/20 08:53, , 8F
我建議嘗試禁止自己寫出**ptr這種樣子 用其他方法改
02/20 08:53, 8F
為什麼@@?? ※ 編輯: kai5566 (122.121.31.79), 02/20/2016 11:08:37

02/20 11:53, , 9F
你現在在看多重指標的麻煩之處應該能夠體會才對
02/20 11:53, 9F

02/20 14:35, , 10F
多用C++ 的call by reference吧
02/20 14:35, 10F

02/20 14:36, , 11F
如果可以用C++的話
02/20 14:36, 11F

02/20 23:07, , 12F
不然 typedef char* PCHAR; (被打
02/20 23:07, 12F

03/05 10:41, , 13F
03/05 10:41, 13F
文章代碼(AID): #1MnpX6vg (C_and_CPP)