为了账号安全,请及时绑定邮箱和手机立即绑定

为什么没有显示字符数据的地址?

为什么没有显示字符数据的地址?

C++
子衿沉夜 2019-07-17 16:37:12
为什么没有显示字符数据的地址?class Address {       int i ;       char b;       string c;       public:            void showMap ( void ) ;};void Address :: showMap ( void ) {             cout << "address of int    :" << &i << endl ;             cout << "address of char   :" << &b << endl ;             cout << "address of string :" << &c << endl ;}产出如下:         address of int    :  something          address of char   :     // nothing, blank area, that is nothing displayed          address of string :  something为什么?另一件有趣的事情是:如果int、char、string是公开的,那么输出是  ... int    :  something    ... char   :      ... string :  something_2something_2 - something总是等于8。为什么?(不是9)
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

当你取b的地址时,你会得到char *operator<<将其解释为C字符串,并尝试打印字符序列而不是其地址。

试一试cout << "address of char   :" << (void *) &b << endl相反。

[编辑]与Tomek注释一样,在本例中使用的一个更合适的强制转换是static_cast,这是一个更安全的选择。下面是一个使用它而不是C风格的强制转换的版本:

cout << "address of char   :" << static_cast<void *>(&b) << endl;


查看完整回答
反对 回复 2019-07-17
  • 3 回答
  • 0 关注
  • 441 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信