【问题标题】:Can a function return a string in c? [closed]函数可以在c中返回字符串吗? [关闭]
【发布时间】:2015-12-11 13:58:40
【问题描述】:

这个问题几乎是不言自明的,但我将添加一个示例来澄清它。

例如,我们有这个函数:

    char abc(void)
    {
      code...
      code...
      return a;
    }

这个函数会将char a返回给abc,但是函数可以返回一个完整的字符串,而不使用指针、文件I/O之类的东西吗?

【问题讨论】:

  • 在 C 中,字符串 通常是一个指针,因为它是一个 char 数组(又名 char*char[])。
  • 字符串是一个字符指针,这就是C表示字符串的方式,这是无法避免的。
  • 使用结构体(作为包装器)。
  • 评论不用于扩展讨论;这个对话是moved to chat

标签: c function return


【解决方案1】:

C 字符串是char 的数组,以char 结束,值为0。 C 函数本身不能返回数组,包括字符串,实际上,数组也不能作为参数传递。传递和/或返回指针是 C 中传递和/或返回数组的替代方案。在很大程度上,您甚至不需要做任何特殊的事情来传递或返回指针来代替数组。

因为精确地谈论这些事情有些麻烦,指针/数组的区别经常被排除在讨论甚至文档之外。人们通常将char * as 称为字符串,而实际上该字符串是第一个元素所指向的数组。然而,这确实存在混淆的可能性,这在问题和相关的 cmets 中很明显。

【讨论】:

  • 所以基本上,你不能在函数中返回正常返回的字符串,但你必须使用指针,如果我理解你的意思?
  • @leon000:没错。在 C 中避免指针就像不喝液体:你不会走远。如果你不喜欢指针,C 绝对是错误的语言。
  • 好的,非常感谢你们,我想我必须要么解决指针问题,要么阅读指针,因为我并不是真正的指针大师,而且我刚刚开始学习它们。刚刚看到你的编辑,我并不是真的在避免指针,我只是说推迟它们,因为我还没有真正完全了解它们。
猜你喜欢
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 2020-04-30
  • 2013-05-13
  • 1970-01-01
相关资源
最近更新 更多