gpt4 book ai didi

C: 如何声明返回非静态字符串的静态函数?

转载 作者:太空狗 更新时间:2023-10-29 17:06:38 26 4
gpt4 key购买 nike

如果函数声明为

static char *function(...) { ... }

这是一个返回static char *的非静态函数,还是返回一个非static char *的静态函数?

比较以下两个函数。哪一个是正确的用法?

static char *fn1(void)
{
static char s[] = "hello";
return s;
}


static char *fn2(void)
{
char *s = malloc(6);
strcpy(s, "world");
return s;
}

最佳答案

static 适用于函数,而不是其返回类型。这两个函数都是正确的——不同之处在于 s 将在第一次调用 fn1 时初始化一次,而所有对 fn1 的调用都会分享s;而在 fn2 中,每次调用都会分配一个新的 s。由于 fn1fn2 都具有 static 链接,因此它们对于定义它们的翻译单元(大约是源文件)是私有(private)的。

关于C: 如何声明返回非静态字符串的静态函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28243423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com