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

Bar*_*oob 3 c arrays string pointers

char * printstring(void)
{
    return "my string";
}
Run Code Online (Sandbox Code Playgroud)

由于函数的作用是返回一个字符数组,为什么我必须声明我的函数返回char*而不是char[]声明.

PSk*_*cik 5

因为C的设计方式,阵列不是一流的公民.您既不能返回它们,也不能通过值将它们传递给函数.

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

struct ten_chars{ char chars[10]; };

struct ten_chars printstring(void)
{
    return (struct ten_chars){"my string"};
}
Run Code Online (Sandbox Code Playgroud)

  • 在`main`中你可以有`printf("%s \n",printstring().chars);`但这是一种丑陋的方式. (2认同)