【C++Q】

//c_str
const char* str2Cchar(string s){
    //const char* ss = s.c_str();  //出错,因为s会被析构,ss指向垃圾内容
    char c[20];
    strcpy_s(c, s.c_str());

    return c;
}

//atoi
int Cchar2int(const char* s){
    //char buffer[100];
    int n = atoi(s);
    return n;
}

int _tmain(int argc, _TCHAR* argv[])
{
    //string s = "123455";
    //const char* ss = str2Cchar(s);

    char s[] = "123455";
    const char* ss = s;

    cout << Cchar2int(ss) << endl;

    return 0;
}

main函数中被注释掉的部分,ss结果为constchar*类型,但是传参给Cchar2int就变成垃圾内容,cout结果为0

why?

状似与str2Cchar中直接c_str一样的错误

猜测与变量的生存周期、内存管理相关

待解答

posted @ 2016-07-05 22:44  料峭  Views(252)  Comments(0Edit  收藏  举报