- 论坛徽章:
- 0
|
#include <string>
using namespace std;
void test1(const char * p)
{
printf("%s", p); //p数据正常
return;
}
string test2(char *p)
{
string str(p);
return str;
}
int main()
{
char * s = "adfg";
test1(test2(s).c_str()); //test1内数据正常
const char * p = test2(s).c_str(); //数据不正常
string str = test2(s); //数据正常
} |
如果按照C的理解
test1(test2(s).c_str()); 中也是调用const char * p = test2(s).c_str();
而直接const char * p = test2(s).c_str(); 数据却不正常
即使我使其调用一次赋值重载也是不行
const char * p;
p = test2(s).c_str(); //数据不正常
执行原理谁能帮我解释一下? |
|