[问题] 又是一个指标问题= =...

楼主: 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