C语言返回地址的问题
以下2个函数为什么一个可以返回地址,一个不可以?
#include "stdlib.h"
#include "stdio.h"
char *return_1(void)
{
char x[12] = "1111";
return x;
}
char *return_2(void)
{
char *x = "2222";
return x;
}
int main(void)
{
char *str;
str = return_2();
printf("%s",str);
system("pause");
}
为什么我用return_1就不行,return_2就行,据我的理解,return_1函数的x数组在该函数调用结束后就自动释放了,所以不能当成地址返回,为什么return_2函数没有同样的问题?