看板 C_and_CPP 關於我們 聯絡資訊
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
Caesar08: &v為取出v的記憶體位置。*v為得到記憶體位置v的object 02/19 23:53
Frozenmouse: *&ptr = ptr = &str; &*ptr = &*&str = &str 02/20 03:31
Frozenmouse: 一個變數的位址裡的值就是該變數的值 02/20 03:42
Frozenmouse: 指標的值是位址,一個指標的值的位址就是該指標的值 02/20 04:15
fightforlive: 副程式參數為字串的第一個字元的位址,所以*&ptr為記 02/20 05:03
fightforlive: 憶體位址.又&*ptr為第一個字元的值然後又取位址,所 02/20 05:04
fightforlive: 以兩者相等 02/20 05:04
testPtt: 我建議嘗試禁止自己寫出**ptr這種樣子 用其他方法改 02/20 08:53
為什麼@@?? ※ 編輯: kai5566 (122.121.31.79), 02/20/2016 11:08:37
testPtt: 你現在在看多重指標的麻煩之處應該能夠體會才對 02/20 11:53
Clangpp: 多用C++ 的call by reference吧 02/20 14:35
Clangpp: 如果可以用C++的話 02/20 14:36
Frozenmouse: 不然 typedef char* PCHAR; (被打 02/20 23:07
Francis0510: 參考看看 http://imgur.com/iABBgmm 03/05 10:41