Возможный дубликат:
Указатель на локальную переменную
#include <iostream>
using namespace std;
char* func();
int main() {
char* str;
str = func();
cout<<str;
return 0;
}
char* func() {
char * str;
char p[] = "priyanka is a good girl";
str = p;
cout<<str<<"\n";
return str;
}
дает вывод,
Приянка хорошая девушка
priy
Я не понял, что здесь произошло, почему неполный массив был передан в качестве вывода. Я немного новичок в этом. Пожалуйста помоги.
В func2()
char p[]
локальная переменная, инициализированная в стеке Возвращение указателя на переменную стека является плохой идеей (и также неопределенным поведением), и я думаю, что ваша строка «priyanka is a good girl» была перезаписана при возврате функции.
Ваша функция func()
возвращает указатель на локальную переменную, которая позже вызывает неопределенное поведение при попытке доступа к ней.