基本上,我想要的是从函数(或一般的数组)返回一个字符串。
type_string(?) Function_foo(type_string(?) string_foo)
{
......
return String_bar;
}
printf("%s", function_foo(string_foo));这应该会给出string_bar作为输出。这有可能吗?到目前为止,我已经看过的所有问题,都给出了特殊的用法,答案也是针对这一点的。
发布于 2013-09-25 22:00:47
数组将不起作用,因为如果它超出作用域,对象将不复存在(除非动态分配)。
但这很好:
char * foo1()
{
char * p= "somestring"
return p;
}
char * foo2()
{
return "somestring";
}发布于 2013-09-25 22:01:06
字符串在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));更多信息可以在Wikipedia上找到。
发布于 2013-09-25 22:59:57
当您创建一个char[]并从一个字符串中返回它时,您实际上从程序堆栈中获得了该char[]的内存。当您的函数返回时,char[]将失去其作用域,并可能包含一个垃圾值。因此,您应该使用malloc来定位char *,这样您将从堆中获取内存,您将不得不在调用函数中使用free()。
https://stackoverflow.com/questions/19006976
复制相似问题