Я натолкнулся на пример на странице, где описываются различные способы представления строки в структурах Си.Это объясняет, что массив, определенный в функции вне main, будет храниться в сегменте стека и как таковой не обязательно будет присутствовать после его возврата, потенциально вызывая ошибку времени выполнения.
ВЫДЕЛЕННЫЙ ВОЗМОЖНЫЙ ДУБЛИКАТ ОБЪЯСНЕНО, ПОЧЕМУ Массив не удалось вернуть, т.е. указатель на элемент 0 не возвращен, он недействителен, но не показал, что причина изменения этого класса не указанаОни пропускают значение, которое выживает после удаления стекового фрейма
"приведенная ниже программа может распечатать некоторые ненужные данные, так как строка хранится в стековом фрейме функции getString (), и данные могут отсутствовать после getString() возвращает. "
char *getString()
{
char str[] = "GfG"; /* Stored in stack segment */
/* Problem: string may not be present after getSting() returns */
return str;
}
int main()
{
printf("%s", getString());
getchar();
return 0;
}
Я понимаю, что другие локальные переменные C также будут определены в их соответствующих кадрах стека, и, очевидно, они могут быть возвращены, так почему это проблема для массивов?
Спасибо