c - 为什么函数必须返回 char * 而不是 char 数组?

标签 c arrays string pointers

char * printstring(void)
{
    return "my string";
}

既然函数所做的是返回一个字符数组,为什么我必须在声明中声明我的函数返回 char* 而不是 char[]

最佳答案

因为 C 的设计方式,数组在其中不是一等公民。您既不能返回它们,也不能按值将它们传递给函数。

如果你想实现其中任何一个,你必须将数组包装在一个结构中。

struct ten_chars{ char chars[10]; };

struct ten_chars printstring(void)
{
    return (struct ten_chars){"my string"};
}

关于c - 为什么函数必须返回 char * 而不是 char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45335619/

相关文章:

c - 我的 minishell 程序收到段错误

c - 在 mex 代码中释放内存

python - 对 numpy 数组进行子采样/平均

python - 用于在不同字符后插入空格的正则表达式

c - 有右引力标记的例子吗?

Javascript/jQuery - "Cannot call method ' 未定义的推送'当它被定义时

Javascript,合并两个排序数组 : Can someone please tell me why this isn't giving the correct mergeSort?

string - 一个 ‘contract’ 字符串如何转义 Bash 中的特殊字符?

C 将值 char 转换为字符串 char

android - libuv(node.js's async lib) 可以在Apple IOS/Android 上运行吗?