У меня есть эта функция:Ошибки возвращение символа * в C++ функции
char* return_string(){
char buffer[] = "Hi world!";
return buffer;
}
bool test08()
{
char compare[] = "Hi world!";
int result = strcmp(compare,return_string());
if (result == 0) return true;
return false;
}
int main()
{
if(test08) printf("\nTRUE");
else printf("\nFALSE");
}
Почему этот код работать в c++ Shell, и он не в CodeBlocks v 13.12 (ошибка сегментации);. он будет работать, если я изменить свою char buffer[]=
декларацию char *buffer=;
я новичок в C++ (легко узнать), поэтому, пожалуйста, ясно ...
Это неопределенное поведение. Вы возвращаете указатель на локальную переменную. –
Не спам-теги несвязанных языков. – Olaf