指针问题

[复制链接]
 楼主| txcy 发表于 2013-6-27 18:25 | 显示全部楼层 |阅读模式
#include "iostream"
#include <string>
  
using namespace  std;
  
int main(){
      
    string   s1="andy test.";
    char  *p1;
    p1=&s1[4];
      
    cout<<"p1="<<p1<<endl;
    cout<<"&s1[4]="<<&s1[4]<<endl;
    cout<<"*p1="<<*p1<<endl;
  
return 0;
}
p1我定义的是一个指针,取的是&s1[4]的地址,但为何p1输出的值是一个字符串“ test”,而不是一个地址值呢?
火箭球迷 发表于 2013-6-27 18:40 | 显示全部楼层
因为p1 是char类型。要输出字符地址,用 &p1
baidudz 发表于 2013-6-27 19:23 | 显示全部楼层
这是<<操作符重载的结果  你强制转换下类型应该就可以了
pkat 发表于 2013-6-27 19:27 | 显示全部楼层
因为 cout 必须支持输出C字符串,所以一切字符类型的指针,都会按照字符串输出,其他的指针才是输出地址。
要保证输出地址,强转为 void* 指针
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部