0

基本上我想要的是从函数(或一般的数组)返回一个字符串。

type_string(?) Function_foo(type_string(?) string_foo)
{
     ......
    return String_bar;
}

printf("%s", function_foo(string_foo));

这应该给我string_bar作为输出。那可能吗?到目前为止,我看过的所有问题都给出了特殊的用例,并且答案都是特定的。

4

3 回答 3

2

数组将不起作用,因为如果超出范围,对象将不复存在(除非动态分配)。

但这很好:

char  * foo1()
{
  char *  p= "somestring"
  return p;
}

char  * foo2()
{
  return  "somestring";
}
于 2013-09-25T14:00:47.300 回答
2

字符串在 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));

更多信息可以在维基百科上找到。

于 2013-09-25T14:01:06.307 回答
1

当您创建 achar[]并从字符串中返回它时,您实际上是char[]从程序堆栈中获取了用于 的内存。当你的函数返回时,它char[]失去了它的作用域并且可以包含一个垃圾值。因此,您应该使用malloc来定位char *,因此您将从堆中获取内存,您必须free()在调用函数中获取内存。

于 2013-09-25T14:59:57.073 回答