-1

我想用我试过的表的动态大小来编译程序int Table[]; 我的程序

编译器返回此消息 4 C:\Documents and Settings\Administrateur\Mes documents\TD4.c `table' 的存储大小未知?不知道存储?我有什么错

4

4 回答 4

4

在 C 中,您不能声明大小未知的数组。

int Table[];

根本不允许。

相反,您可以声明一个指针:

int *Table;

并使用malloc/realloc函数动态分配/重新分配。

于 2012-12-27T19:34:01.503 回答
1

当您使用表格时,您必须声明它的初始大小:int table[SIZE];. 当您在编译时不知道表的大小(例如,您从用户读取数据)时,您总是可以以不同的方式分配内存(大小是变量,而不是常量):

int* table = (int*)malloc(sizeof(int)*size));

于 2012-12-27T19:34:51.157 回答
1

如果要创建动态表/数组,可以使用C 中malloc的函数和newC++ 中的运算符来实现。您应该根据您是使用 C 还是 C++free来取消分配内存。delete

于 2012-12-27T19:35:22.363 回答
1

您不能以这种方式动态定义数组。你必须给它一个存储大小:

    int Table[43]; 

另一种方法是使用 malloc:

    int *Table = malloc (sizeof (int) * N);
    int i;

    for (i = 0; i < N; i++)
        Table[i] = i;

其中 N 将通过某种方式传递。之后不要忘记free()在数组上使用。

于 2012-12-27T19:38:25.247 回答