Почему первая функция возвращает строку "Hello, World", но вторая функция ничего не возвращает. Я думал, что возвращаемое значение обеих функций будет undefined, поскольку они возвращают данные, выходящие за рамки.
#include <stdio.h>
// This successfully returns "Hello, World"
char* function1()
{
char* string = "Hello, World!";
return string;
}
// This returns nothing
char* function2()
{
char string[] = "Hello, World!";
return string;
}
int main()
{
char* foo1 = function1();
printf("%s\n", foo1); // Prints "Hello, World"
printf("------------\n");
char* foo2 = function2(); // Prints nothing
printf("%s\n", foo2);
return 0;
}