作者kai5566 (改名Dirk_AI56)
看板C_and_CPP
标题[问题] 又是一个指标问题= =...
时间Fri Feb 19 23:44:02 2016
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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1455896646.A.E6A.html
1F:→ Caesar08: &v为取出v的记忆体位置。*v为得到记忆体位置v的object 02/19 23:53
2F:→ Frozenmouse: *&ptr = ptr = &str; &*ptr = &*&str = &str 02/20 03:31
3F:→ Frozenmouse: 一个变数的位址里的值就是该变数的值 02/20 03:42
4F:推 Frozenmouse: 指标的值是位址,一个指标的值的位址就是该指标的值 02/20 04:15
5F:→ fightforlive: 副程式参数为字串的第一个字元的位址,所以*&ptr为记 02/20 05:03
6F:→ fightforlive: 忆体位址.又&*ptr为第一个字元的值然後又取位址,所 02/20 05:04
7F:→ fightforlive: 以两者相等 02/20 05:04
8F:→ testPtt: 我建议尝试禁止自己写出**ptr这种样子 用其他方法改 02/20 08:53
为什麽@@??
※ 编辑: kai5566 (122.121.31.79), 02/20/2016 11:08:37
9F:→ testPtt: 你现在在看多重指标的麻烦之处应该能够体会才对 02/20 11:53
10F:推 Clangpp: 多用C++ 的call by reference吧 02/20 14:35
11F:→ Clangpp: 如果可以用C++的话 02/20 14:36
12F:推 Frozenmouse: 不然 typedef char* PCHAR; (被打 02/20 23:07