c语言返回值为数组的问题
借鉴他人,自我学习
1.可以用数组输出
返回值为指针形式,传参为指针。返回一个地址
例如:
char *text(char *tmp)
{
return tmp;
}
int main()
{
printf("%s",text("ffffx"));
}
输出的结果为ffffx
但是如果这样写
char *text()
{
char tmp[30] = "ffffx";
return tmp;
}
int main()
{
printf("%S",text());
}
这样语法虽然没有问题但是输出结果没有意义;因为tmp[30]是局部变量返回时虽然首地址没有变,但是里面的值已经无意义。
tmp*定义的是一个全局变量。
char *text()
{
char *tmp = "ffffx";
return tmp;
}
int main()
{
printf("%S",text());
}
如果这样的话就可以了因为字符串代表的十一个全局变量被存储在一个地址中,而且地址被返回了,之后就算tmp被销毁了,结果还是正确的。