在函数内建立的局部变量在函数结束后会被销毁,所以如何从函数返回函数内新建的char*是一个问题
看一个例子:
char* get_char_1(){
string s = "abc";
return (char*)s.c_str();
}
int main(){
char* temp = get_char_1();
cout << temp;
return 0;
}
此时什么也不输出
解决方法:在函数内新建一个static char数组,这样函数结束数组也不会被销毁
char* get_char_2(){
string s = "abc";
static char a[20];
strcpy(a, s.c_str());
return a;
}
int main(){
char* temp = get_char_2();
cout << temp;
return 0;
}