c - 动态矩阵作为函数的静态参数

标签 c arrays matrix declaration allocation

基本上,我想创建一个动态矩阵并创建一个函数,该函数以 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/

相关文章:

c - 如何在 Turbo C 中以十六进制格式存储和打印十六位数字?

c++ - 如何制作高效的C++跳转表?

C - 将数组传递给链表的节点

java - Java 中的矩阵转置

c - MISRA 2012 规则 14.2

c - 有没有办法将文件指针设置为特定行?

c - 我想在 C 中为二维数组创建一个通用选择器

php - 将多个值插入同一列名称+覆盖/更新现有条目?

python边缘列表到邻接矩阵

java - 用行填充矩阵