为什么这个函数使数组改变另一个变量?

时间:2014-09-27 16:22:27

标签: c arrays function variables

我在这里有一个功能

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

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

在我的main函数中,我使用带有此代码的函数:

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

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

1 个答案:

答案 0 :(得分:0)

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

这个怎么样?

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

请记住在使用后丢弃数组,否则会泄漏内存

free(array);