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