基本上我想要的是从函数(或一般的数组)返回一个字符串。
type_string(?) Function_foo(type_string(?) string_foo)
{
......
return String_bar;
}
printf("%s", function_foo(string_foo));
这应该给我string_bar
作为输出。那可能吗?到目前为止,我看过的所有问题都给出了特殊的用例,并且答案都是特定的。
数组将不起作用,因为如果超出范围,对象将不复存在(除非动态分配)。
但这很好:
char * foo1()
{
char * p= "somestring"
return p;
}
char * foo2()
{
return "somestring";
}
字符串在 C 中不作为类型存在,它们是char
数组。数组基本上是指向第一个元素的指针。所以,要返回一个字符串(或数组),你返回一个指针:
const char *function_foo(const char *string_foo)
{
const char *String_bar = "return me";
return String_bar;
}
const char *string_foo = "supply me";
printf("%s", function_foo(string_foo));
更多信息可以在维基百科上找到。
当您创建 achar[]
并从字符串中返回它时,您实际上是char[]
从程序堆栈中获取了用于 的内存。当你的函数返回时,它char[]
失去了它的作用域并且可以包含一个垃圾值。因此,您应该使用malloc
来定位char *
,因此您将从堆中获取内存,您必须free()
在调用函数中获取内存。