我正在做一个从文本文件中读取的程序,以确定矩阵的大小(行和列)以及矩阵的相应内容。
我想知道是否有:
int main()
{
int rows = FunctionThatReadsRows();
int cols = FunctionThatReadsCols();
int matrx[rows][cols];
return 0;
}
会工作吗?还是需要动态分配?我不确定在任何代码运行之前是否初始化变量? 我需要在整个计划中使用矩阵。
如果需要动态分配,我应该怎么做? 感谢。
答案 0 :(得分:4)
在C99之前,你无法声明动态大小的数组(尽管有很多编译器支持它)。在C99中,你可以。
如果你不想这样做,你必须在堆上有malloc
个内存,例如:
int *matrix = malloc(sizeof(int) * rows * cols);
但是,您将无法以二维方式将其编入索引;你需要做matrix[i*cols+j]
之类的事情(或写一个函数/宏来隐藏它)。
请记得在完成后致电free(matrix)
!