【发布时间】:2019-10-23 04:17:41
【问题描述】:
我想知道如何将可变行和列的矩阵传递给函数,在函数内部对其进行转换,然后在 C 中返回它。
这是我正在尝试构建的代码。
#include <stdio.h>
#include <stdlib.h>
void **f(int **m, int w, int h);
int main()
{
int A[3][3]={{1,2,3},{4,5, 6},{7,8,9}};
int B[3][2]={{1,2},{3, 4}, {5, 6}};
f(A, 3, 3);
f(B, 3, 2);
return 0;
}
void **f(int **m, int w, int h )
{
int i,j;
int n[w][h];
for(i=0;i<w;i++)
{
for(j=0;j<h;j++)
n[i][j] = m[i][j] + 1;
printf("%5d", m[i][j]);
}
return 0;
}
谁的编译返回以下错误:
main.c:20:5: 警告:传递“f”的参数 1 使指针从整数而不进行强制转换 [->Wint-conversion]
main.c:13:8:注意:预期为“int **”,但参数的类型为“int”
main.c:21:5: 警告:传递“f”的参数 1 使指针从整数而不进行强制转换 [->Wint-conversion]
main.c:13:8:注意:预期为“int **”,但参数的类型为“int”
分段错误(核心转储)
【问题讨论】:
-
使用
f(A, 3, 3),不要取消引用变量。
标签: c matrix multidimensional-array dynamic-arrays