c++如何用cout对象输出char型数组的内存地址,前提只准用char型数据表示

如题书中这样写到:cout(int*)"abcdefg";为什么要声明为int*型呢????是不是char型指针无法表示内存地址,如果用char型指针表示,只会将其当作字... 如题书中这样写到:cout (int*)"abcdefg";
为什么要声明为int*型呢????是不是char型指针无法表示内存地址,如果用char型指针表示,只会将其当作字符串来处理啊????????
展开
 我来答
White_MouseYBZ
2015-03-06 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6387万
展开全部
应该是cout << (int*)"abcdefg";你忘写<<了。是这样的,C++把cout << 字符型指针;这样的输出格式安排给输出字符串了,就是说如果有char a[11]="1234567890";定义,那么cout << a;被编译器解释为一个接一个地按字符格式从地址a开始输出a指向的内容,直到遇到'\0'为止,且不输出'\0'(即1234567890),而并不解释为输出指针a的地址值(即1的地址)。而对其他类型的指针,编译器都把cout << 指针;这种格式解释为输出指针的值(即地址)。所以要输出字符型指针的值,就得想一个办法,那就是把字符型指针临时强制为其他类型的指针。其实不是一定要强制成int *,强制成float *、double *都行,但最好的是强制为void *型,这样不易产生误解,因为void *型指针除了是个地址外没有别的类型性质。
追问
一楼说不可以转换为浮点型,因为这样会非法,到底哪个对呢??
GetSafeHwnd
2015-03-06 · TA获得超过918个赞
知道大有可为答主
回答量:1068
采纳率:76%
帮助的人:734万
展开全部
cout (cin) 对于char * 类型特殊关照 输出指针指向的字符串 占用了 , 既然这个坑已被占了,这个坑就不能再去用来输出指针(字符串的地址),[不输出 地址值 而输出地址值 中 存放的字符串],不然你打算让他们 如何输出字符串呢亲
追问
输出指针指向的字符串 占用了??这句话什么意思??是指针被字符串占用了吗??所以才无法表达字符串的地址吗???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
认不倒你
2015-03-06 · TA获得超过666个赞
知道小有建树答主
回答量:820
采纳率:50%
帮助的人:356万
展开全部
是的。。。
更多追问追答
追问
既然可以处理为int*型,那么可不可以处理为整形和浮点型呢??????
追答
不可以,指针转换为float非法,转换成int会丢失数据。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式