基本上,我想创建一个动态矩阵并创建一个函数,该函数以 matrix[rows][cols]
的静态形式接收矩阵。
当函数接收 *matrix[const]
形式的矩阵时,一切正常,但这是“半动态”。
我知道,例如,当我声明 int **matrix
并分配内存时,我创建了一个指向指针数组的指针...当我声明矩阵时在函数头的静态形式中,那么我并没有真正收到数据,而是指针地址。
那么,有什么方法可以创建一个完整的动态矩阵并将其作为一个完整的静态矩阵发送?
最佳答案
因为 C 支持 variable-length arrays (我认为你的意思是你使用)你也可以在调用函数时使用它们。只需先将维度作为参数传递,然后将它们用于后面的数组或矩阵参数:
void some_function(size_t rows, size_t cols, int matrix[rows][cols])
{
...
}
请注意,上述函数中的 matrix
实际上是一个指针。编译器会将参数声明 int matrix[rows][cols]
视为 int (*matrix)[cols]
。
关于c - 动态矩阵作为函数的静态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49798841/