【发布时间】:2020-08-22 21:05:04
【问题描述】:
假设我有一个执行特定任务的递归函数。该函数接收整数矩阵的单个参数。有没有办法在随后的函数调用期间将子矩阵作为参数传递,其方式类似于将指针推进到数组(让arr[10] 成为我们的数组。然后执行arr += 1 将提前开始数组前一索引。
此外,函数的签名不能更改。
例子:
void f(int matrix[N][N])
{
// Some code here
f(matrix+1);
}
【问题讨论】:
-
您最好的选择可能是将当前矩阵的索引添加到 f() 中,例如
void f(int matrix[N][N], int level) -
@paulsm4 忘了说不能更改函数的签名。编辑了帖子。
-
C 数组是一个连续的元素序列。子数组通常不是(一维情况除外),因此这两种类型不兼容。如果您无法更改函数,则需要制作子矩阵的副本并将其作为参数传递。
标签: arrays c matrix multidimensional-array