gpt4 book ai didi

c - 从 C 函数返回数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:10 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何在 C 中返回一个数组。这是代码。我想要做的是保存一个数组,然后使用函数返回打印它。我在这里做错了什么?

#include <stdio.h>
#define DIM 50


char *func (char input[]);

int main(void)
{
char input[DIM];

printf("input? ");
fgets(input, DIM, stdin);

printf("output: %s", func(input));

return 0;
}

char *func(char input[])
{
int i;
char output[DIM];

for(i = 0; i < DIM; i++)
output[i] = input[i];
return &output;
}

最佳答案

其他答案已经说明了一个问题:

  • 从函数返回局部(非静态)变量的地址是不安全的。

另一个问题是:

char output[DIM];

类型:

return &output;

是“指向 char 数组的指针”而不是 char *。如果你写道:

return output;

你会没事的——如果你整理好返回值的持续时间。类似地,如果您将函数定义为返回一个指向数组的指针,您也可以:

char (*func(char input[]))[]
{
static char output[DIM];
...
return &output;
}

请注意,像这样使用静态变量会使函数不可重入(在线程应用程序中使用不安全),除非数组实际上是常量(在这种情况下,定义应该说它是常量)。

关于c - 从 C 函数返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16738954/

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