只有矩阵第一行的值通过 Add() 传递。我得到了错误的结果。例如:矩阵 1 有元素 1,2,3,4 。但是,当我在 add() 中打印这些值时,我我得到 1,2,0,0。
#include <stdio.h>
int main()
{
int arr[100][100], arr1[100][100];
int m, n, x, y, z;
printf("\n Enter order of matrix");
scanf("%d %d ", &m, &n);
//ENTRY OF MATRIX
printf("\n Enter Values of Matrix 1");
for (x = 0; x < m; x++)
{
for (y = 0; y < n; y++)
scanf("%d ", &arr[x][y]);
}
printf("\n Enter Value of Matrix two ");
for (x = 0; x < m; x++)
{
for (y = 0; y < n; y++)
scanf("%d ", &arr1[x][y]);
}
add(m, n, arr, arr1);
return 0;
}
void add(int m, int n, int a[m][n], int b[m][n])
{
int x, y;
for (x = 0; x < m; x++)
{
for (y = 0; y < n; y++)
printf("%d ", a[x][y]);
printf("\n");
}
}
最佳答案
在 C 语言中,函数必须在使用前声明,并且声明和调用之间参数的类型必须匹配。
在OP的代码中,几个二维数组声明为
int arr[100][100];
传递给在main()
之后定义的函数为
void add(int m, int n, a[m][n], b[m][n]) { /* ... */ }
生成两个问题:
add()
在main()
中使用,但之前没有声明,仅在之后定义。arr
和arr1
是 100 x 100int
的二维数组,但函数add()
为编写,接受两个大小为m
xn
的可变长度数组。
OP 有两种修复方法,要么更改函数的接口(interface)并在 main()
之前声明它,如下所示:
void add(int m, int n, a[][100], b[][100]); // and define after main
或者更改arr
和arr1
的声明:
// includes...
void add(int m, int n, a[m][n], b[m][n]);
int main(void)
{
int m, n;
// ...
// read n and m before using them to declare the two VLA
int arr[m][n], arr1[m][n];
// ...
add(m, n, arr, arr1);
// ...
}
void add(int m, int n, a[m][n], b[m][n])
{
// ...
}
关于c - 下面的代码有什么问题吗?出现错误 : Add is not a func or pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255672/