首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符指针类型转换成整型指针部类

2012-10-17 
字符指针类型转换成整型指针类型int a1char *babcdchar cvcout&bendl//输出b的地址。cout

字符指针类型转换成整型指针类型
int a=1;
char *b="abcd";
char c="v";
cout<<&b<<endl;//输出b的地址。
cout<<&c<<endl;//为什么输出结果不是c的地址。
cout<<(int *)b<<endl;//b为字符指针,转换成整型指针的结果是什么?
cout<<(void *)b<<endl;
cout<<(int *)(*(&b))<<endl;

[解决办法]
说说你那五行 cout 吧:
1. b 是指针,本身就是字符数组的首地址了,你输出的是这个指针(地址)的地址。
2. &c 是一个字符指针,cout 将其视为字符串输出。第一个肯定是 c,后面内容和长短视内存值而定。
3. 输出的是 b 这个指针(地址)的值(与 2 不同,2 输出的是这个地址的地址)。
4. 同 3 输出结果一样。
5. 和 3 是完全一样的。*(&b) 和 b 有什么不一样的?
[解决办法]
同意

探讨

说说你那五行 cout 吧:
1. b 是指针,本身就是字符数组的首地址了,你输出的是这个指针(地址)的地址。
2. &amp;c 是一个字符指针,cout 将其视为字符串输出。第一个肯定是 c,后面内容和长短视内存值而定。
3. 输出的是 b 这个指针(地址)的值(与 2 不同,2 输出的是这个地址的地址)。
4. 同 3 输出结果一样。
5. 和 3 是完全一样的。*(&amp;b……

[解决办法]
简单地说,cout会根据输出参数的类型调用不同的重载
对于字符指针类型,cout会认为你给它的是一个字符串首地址,因而输出字符串

我不喜欢cout的一大原因,就是因为它太自动化了
它很聪明,我不够聪明,没能力驾驭它

热点排行