c - 为什么这个函数会让一个数组改变另一个变量?

标签 c arrays function variables

我这里有一个函数

char ** makeArray(int count)
{
      char **array[count];
      return array[count];
}

从数组中获取标记数量,然后返回具有正确大小的数组。 但由于某种原因,它的计数正在改变。

在我的主函数中,我使用带有以下代码的函数:

char **dictionary;
dictionary = makeArray(count);

使用函数前count的值为10,使用函数后count的值为6。

最佳答案

我不知道你使用的是什么c编译器,但是该代码无法在VC++中编译。如果你想在编译时声明一个数组,你的“count”变量必须是一个编译时常量。

这个怎么样?

char ** makeArray(int count)
{
    char** array = (char**)malloc(sizeof(char*)*count);
    return array;
}

使用完数组后记得丢弃它,否则会泄漏内存

free(array);

关于c - 为什么这个函数会让一个数组改变另一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26076685/

相关文章:

c - 用C填充一个数组

Java:同时移动对象

javascript - 将作用域传递给 self-exec 函数内的函数

python - isTrue 函数有什么用吗?

python - 发送和接收 SNMP 陷阱并为 NAS 设备创建 MIB 文件

c - 对txt中的结构化数据进行排序

javascript - 使用javascript删除数组元素

css - 无法在 SASS 中创建动态阴影调色板

c - 为什么我的函数会使程序崩溃?

c - 基于不透明结构的 C API 的单元测试