使用同一结构的nembers初始化矩阵的错误

Error initializing matrix with nembers of the same struct

本文关键字:初始化 错误 nembers 结构      更新时间:2023-10-16

我正在学习C 。

i仅需要一个矩阵和特别是矩阵中有多少行和列。尽管我可以使用以下结构:

struct map {
    int rows;
    int columns;
    int matrix[rows][columns];
}

但是,它没有编译。有一个错误:int matrix[rows][columns];

我也尝试了:

struct map {
    int rows;
    int columns;
    int matrix[map.rows][this.columns];
}

但是,它不会编译。

map.matrix将具有map.rowsmap.columns。我以这种方式声明了,因为我不知道我是否可以在不指定其尺寸的情况下声明。

如果这样做是正确的: int matrix[][];

我该怎么做才能使map.matrix具有map.rows行和map.columns列?

为了在堆栈上创建一个数组(即,不是用 new将其分配在堆上(,需要在编译时知道阵列的大小(您的行和列是在编译时不知道(。

替代1 :在堆上分配(对于不适合堆栈的大数组(或简单地使用向量(向量使用堆内存(。

替代2 :如果您确实需要它在堆栈上,则可以使用模板类:

template <size_t ROWS, size_t COLUMNS>
class MyMatrix
{
    int _matrix[ROWS][COLUMNS];
};