代码示例一编译以后会出现一个警告,并且在运行以后打印结果也会错误,原因是数组a在函数执行完后就会被释放掉,导致在打印的时候会出现问题。
#include <stdio.h>
char *fun(){
char a[]={'a','b','c','d'};
return a;
}
int main()
{
char *b=fun();
for(int i=0;i<4;i++){
printf("%c ",b[i]);
}
return 0;
}
代码示例二将数组a变成一个静态变量类型的数组(static关键字),在函数执行完不会被释放掉,只有在程序全部执行完才会被释放掉,能够解决掉示例一的问题。
#include <stdio.h>
char *fun(){
static char a[]={'a','b','c','d'};
return a;
}
int main()
{
char *b=fun();
for(int i=0;i<4;i++){
printf("%c ",b[i]);
}
return 0;
}