为了说明这个问题,我们首先来看看一个例子:
char *returnStr()
{
char *s = "abcdef";
return s;
}
char *returnArr()
{
char a[] = "abcdef";
return a;
}
void main()
{
printf("%s\n", returnStr());
printf("%s\n", returnArr());
return;
}
运行后结果是:第一个打印出了字符串:abcdef;但是第二个却没有打印出来结果,在编译时候编译器提示:warning: function returns address of local variable
这是什么原因呢?
我们知道:字符串是被当做字符数组来处理的。所以字符数组名就相当于指向首地址的指针。那么