为什么字符型变量的地址不能用cout输出啊?

shoperlee 2005-08-11 04:14:55
我输出整型变量的地址是OK的,但是输出字符型变量的地址时

就不正确。程序如下:

#include <iostream.h>
#include <stdio.h>
int main()
{
int i = 1024;
//int *pi = &i;
char ch = 'a';

cout<<"i:"<<i
<<"\t&i:\t"<<ch<<endl;
cout<<"the address of a is:"<<&ch<<endl;

system("Pause");
}


将&ch用(int)强制转换符就OK了,但是用static_cast<int>就不行

哪位大侠告诉一下原因啊?!!
...全文
536 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shoperlee 2005-08-15
  • 打赏
  • 举报
回复
楼上的,不知道你想用static_const<char * >(pc) 干嘛??
K 2005-08-13
  • 打赏
  • 举报
回复
学习了
zousoft 2005-08-13
  • 打赏
  • 举报
回复
引一段《c++大学教程》里的例子:

int main(){

char *string = "test";

cout << "Value of string is: " << string
<< "\nValue of static_cast<void *>(string) is: "
<< static_cast<void*>(string)<<endl;
return 0;
}
zhangsong1238 2005-08-13
  • 打赏
  • 举报
回复
const char * pc="hello";
cout<<pc<<endl;
结果:hello
const char * pc="hello";
cout<<static_cast<void*>(static_const<char * >(pc))<<endl;
结果:OX********
N_thread 2005-08-13
  • 打赏
  • 举报
回复
C语言里面地址用%p来打印的。
我啃 2005-08-12
  • 打赏
  • 举报
回复
由于<<符太“聪明”了,所以被变成int类型了,用C的函数输出比较好
#include <stdio.h>
char c='a';
printf("%ld",&c);
「已注销」 2005-08-12
  • 打赏
  • 举报
回复
用(long)&ch比较好一点
xzgyb 2005-08-12
  • 打赏
  • 举报
回复
输出字符型变量的地址
被认为是char *
char *被cout 认为是输出一个字符串
static_cast用于隐式类型转换,
而 char *到int不可以
一个可以用reinterpret_cast<int>( &ch );

还可以用
static_cast< void * >( & ch );
shoperlee 2005-08-12
  • 打赏
  • 举报
回复
我本来就是想把它转换为int型来输出啊。

还有2楼的大侠,请详细说明一下~~
fangrk 2005-08-12
  • 打赏
  • 举报
回复
地址用static_cast<void *>(&ch);比较好
snowbirdfly 2005-08-12
  • 打赏
  • 举报
回复
这样是不是太“聪明”有时也不好啊~~
呵呵~~
jsjjms 2005-08-11
  • 打赏
  • 举报
回复
<< 不是万能什么都能输出的, 你强制转换之后就变成了 int类型的!
zhangsong1238 2005-08-11
  • 打赏
  • 举报
回复
重载了<<操作

64,656

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧