读书人

函数内无法访问传到的二维数组求解

发布时间: 2013-08-10 21:14:06 作者: rapoo

函数内无法访问传入的二维数组,求解
代码如下,看了下出入的地址也确实是A4的地址

int A4[][4] = {{3, 7, 2, 1},
{6, 3, 7, 4},
{5, 1, 8, 7},
{4, 3, 6, 2}
};

int get_max_sum_matrix(int **A, int N, int M)
{
int i = 0, j = 0;
int **d = NULL;

d = (int **)malloc(sizeof(int *) * N);
for (i = 0; i < N; i++){
d[i] = (int *)malloc(sizeof(int) * M);
for (j = 0; j < M; j++){
d[i][j] = 0; //初始化为0
}
}

d[0][0] = A[0][0]; //这里访问A[0][0]挂掉
for (i = 0; i < N; i++){
for (j = 0; j < M; j++){
if (i == 0 && j > 0){
d[i][j] = d[i][j - 1] + A[i][j];
continue;
}
if (i > 0 && j == 0){
d[i][j] = d[i - 1][j] + A[i][j];
continue;
}
if (i == 0 && j == 0){
continue;
}

d[i][j] = ((d[i][j - 1] > d[i - 1][j]) ? d[i][j - 1] : d[i -1][j]) + A[i][j];
}
}
return d[N- 1][M - 1];
}

调用方式为get_max_sum_matrix(A4, 4, 4);


求大家解答下 二维数组 C
[解决办法]
int get_max_sum_matrix(int **A, int N, int M)
=>
int get_max_sum_matrix(int A[][4], int N, int M)
[解决办法]
引用:
Quote: 引用:

int get_max_sum_matrix(int **A, int N, int M)
=>
int get_max_sum_matrix(int A[][4], int N, int M)

传参后不是会退化为指针吗?为何之前那样不行呢?


数组退化成指向第一个元素的指针,那二维数组的退化后,就成 int(A*)[4]了,而不是一个二级指针,不知道,这样说,你明白没有,二维数组的第一个元素的类型就是个一维数组呀。

读书人网 >C语言

热点推荐