Как вам функция fun
const char* fun(){
const char* x = "abc";
std::cout << "x = " << x << "\n";
return x;
}// the pointer returns but it's content still alive, because it points to string literal
Если вы измените функцию fun
на следующую:
const char* fun(){
char x[] = "abc";
std::cout << "x = " << x << "\n";
return x;
}// the pointer returns but it's content died
, то:
const char* y = fun();
std::cout << "y = " << y << "\n";
вывод, как и ожидалось (у '' '):
Поскольку вышеприведенный const char* x = "abc";
не является локальной переменной, это string literal
, который имеет статическую продолжительность хранения и существует в течение всей жизни программы.
На противоположном char x[] = "abc";
- локальная переменная, которая погибнет, когда выйдет из области видимости.