矩阵:内存分配问题

时间:2010-10-28 17:16:37

标签: c matrix allocation

我正在做一个从文本文件中读取的程序,以确定矩阵的大小(行和列)以及矩阵的相应内容。

我想知道是否有:

int main()
{
int rows = FunctionThatReadsRows();
int cols = FunctionThatReadsCols();
int matrx[rows][cols];
return 0;
}

会工作吗?还是需要动态分配?我不确定在任何代码运行之前是否初始化变量? 我需要在整个计划中使用矩阵。

如果需要动态分配,我应该怎么做? 感谢。

1 个答案:

答案 0 :(得分:4)

在C99之前,你无法声明动态大小的数组(尽管有很多编译器支持它)。在C99中,你可以。

如果你不想这样做,你必须在堆上有malloc个内存,例如:

int *matrix = malloc(sizeof(int) * rows * cols);

但是,您将无法以二维方式将其编入索引;你需要做matrix[i*cols+j]之类的事情(或写一个函数/宏来隐藏它)。

请记得在完成后致电free(matrix)