C++类型转换小疑惑

int main(){
    char *p = "a";
    int i = (int)"a";
    int i2 = (int)p;
    //int i3 = static_cast<int>(p);
    int i5 = reinterpret_cast<int>(&p);
    cout << p<<endl;
    cout << &p << endl;
    cout << i << endl;
    cout << i2 << endl;
    //cout << i3<< endl;
    cout << i5 << endl;
    cout << i5 << endl;
*    cout << i5 << endl;
}

从执行结果来看,i和i2的值是一样的。

p是指向字符串,

&p打印的是p的地址

    int i = (int)"a";

这个是将"a"的结果转换为int类型。因为字符串的返回值是其首地址,也就是我们将字符串“a”的首地址做转化,转为为int型,

而i2是将p做强制类型转换,转换为int并打印,因为p的内容就是字符串“a”的首地址,所以两者的值是相等的
    int i2 = (int)p;



真实指针做得很好的一件事是,支持隐式转换。子类对象指针可以隐式转换为基类指针。指向 non-const对象的指针可以转换为指向const对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值