【发布时间】:2015-10-31 13:27:30
【问题描述】:
我在 C 中有这样一个函数:
char **collect_character_distribution(char *buffer, long lSize)
{
printf("Collecting character distribution...\n");
long x;
char distribution[256][2] = {0};
for (x = 0; x < lSize; x++)
{
distribution[(int)buffer[x]][0] = (char) buffer[x];
distribution[(int)buffer[x]][1]++;
}
return (char **) distribution;
}
我需要从上面的函数中返回二维分布数组。我的主要功能如下:
int main()
{
char *buffer;
long lSize;
struct Bar result = funct();
char **distribution;
buffer = result.x;
lSize = result.y;
distribution = collect_character_distribution(buffer, lSize);
printf("%s\n", distribution);
//struct Bar encoding_tree = generate_encoding_tree(distribution);
return 0;
}
我收到以下错误:
警告:函数返回局部变量的地址 [-Wreturn-local-addr]
我该如何解决这个问题?
【问题讨论】:
-
您在循环中创建了一个变量,并且您试图将其地址传递给外部,这是没有意义的,因为该变量一旦失去作用域就会被销毁
-
@Arc676:有趣的案例 - 虽然重复涉及 完全相同的消息(并且 OP 没有看到它或没有寻找它),但我发现自己质疑是否一般来说,公认的答案是可取的。它甚至不回答问题!