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

作者: kai5566 (改名Dirk_AI56)   2016-02-19 23:44:02
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 結果是一樣的??
作者: Frozenmouse (*冰之鼠*)   2016-02-20 23:07:00
不然 typedef char* PCHAR; (被打
作者: Caesar08 (Caesar)   2016-02-19 23:53:00
&v為取出v的記憶體位置。*v為得到記憶體位置v的object
作者: Frozenmouse (*冰之鼠*)   2016-02-20 03:31:00
*&ptr = ptr = &str; &*ptr = &*&str = &str一個變數的位址裡的值就是該變數的值指標的值是位址,一個指標的值的位址就是該指標的值
作者: fightforlive (學歷無用論是屁)   2016-02-20 05:03:00
副程式參數為字串的第一個字元的位址,所以*&ptr為記憶體位址.又&*ptr為第一個字元的值然後又取位址,所以兩者相等
作者: testPtt (測試)   2016-02-20 08:53:00
我建議嘗試禁止自己寫出**ptr這種樣子 用其他方法改你現在在看多重指標的麻煩之處應該能夠體會才對
作者: Clangpp (Clang++)   2016-02-20 14:35:00
多用C++ 的call by reference吧如果可以用C++的話
作者: Francis0510 (職業學生)   2016-03-05 10:41:00

Links booklink

Contact Us: admin [ a t ] ucptt.com