【发布时间】:2015-09-19 04:02:30
【问题描述】:
我有一个二维数组 A 和一个递归函数
`// A is a 2D array,n11: no. of rows in A, n12: no. of columns in A
void rotate(int** A, int n11, int n12)
{
//do something
//pass sub-array starting at A[1][1] having n11-2 rows and n12-2 columns
rotate(???,n11-2,n12-2);
}`
A 的 malloc 已在调用函数中完成。 函数原型不可修改。
【问题讨论】:
-
如果“无法修改函数的原型”,这是不可能的。因为
int **与真正的二维数组不同。 -
如果必要的信息通过全局变量传递,则可以 (
rotate(A,n11-2,n12-2);)。 -
沿着对角线,可能是一种特殊情况:a[1][1] = a + n11 * 1 + 1 等等...所以你可以通过 &a[1][1]如果你只需要对角线......或者可能不是:)
标签: c arrays pointers recursion sub-array