微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 当字符串超出范围时,将string :: c_str()分配给const char *

我对基本的C使用有疑问.下面的代码,使用 gcc / LInux编译,正确打印出来.

字符串测试超出范围所以它的c_str()值也应该是无效的不是吗?我错了还是我误解了const char *的含义?

#include <iostream>
   int main(){
     const char* a = "aaaa";
       std::cout << a;
       { std::string test("bbbb");a=test.c_str();}
       std::cout << a;
       a = "cccc";
       std::cout << a;
   }


   aaaabbbbcccc
   // print out without any problem

解决方法

你没错,你的代码无效,因为它使用的是一个生命周期已经结束的对象.它“偶然”工作,你不能依赖它.

原文地址:https://www.jb51.cc/c/116429.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐