我正在尝试将数字扫描到2个2D数组中,并且我继续得到重新定义的错误。
代码:
#include <stdio.h>
#define N 3
void getMatrix(double mat[N][N]);
/*
char getMenuOption();
void getCoordinates(int*, int*);
void sumMatrices(double mat1[][N], double mat2[][N]);
void changeMatrix(double mat[][N]);
void printMatrix(double mat[][N]);
*/
int main() {
double A[N][N], B[N][N];
/*
char option;*/
getMatrix( A[N][N]);
getMatrix( B[N][N]);
/*
option = getMenuOption();*/
return 0;
}
void getMatrix(double A[N][N]){
int i;
for(i=0;i<=N;i++){
for(i=0;i<N;i++)
{
scanf("%lf",&A[N][N]);
}
}
return;
}
void getMatrix(double B[N][N]){
int i;
for(i=0;i<=N;i++){
for(i=0;i<N;i++)
{
scanf("%lf",&B[N][N]);
}
}
return;
}
我想问题是两次调用相同的函数,但我不太确定。 如果有人能帮助我指出问题,那将是非常受欢迎的。
答案 0 :(得分:1)
您不需要定义两次功能(将其称为两次或更多次)。一个函数可以被多次调用,这就是将函数放在首位的原因。摆脱
void getMatrix(double B[N][N]){
int i;
for(i=0;i<=N;i++){
for(i=0;i<N;i++)
{
scanf("%lf",&B[N][N]);
}
}
return;
}
话虽如此,你应该调用像
这样的函数getMatrix(A);
getMatrix(B);
传递数组(衰变到指针,无论如何)。符号A[N][N]
表示数组的成员以及定义为
double A[N][N];
它是一个接一个,因为C中的数组索引从0开始。
答案 1 :(得分:0)
该函数定义了两次
第一个定义
void getMatrix(double A[N][N]){
int i;
for(i=0;i<=N;i++){
for(i=0;i<N;i++)
{
scanf("%lf",&A[N][N]);
}
}
return;
}
第二个定义
void getMatrix(double B[N][N]){
int i;
for(i=0;i<=N;i++){
for(i=0;i<N;i++)
{
scanf("%lf",&B[N][N]);
}
}
return;
}
考虑到这些函数调用无效
getMatrix( A[N][N]);
getMatrix( B[N][N]);
参数的类型为double
,而不是数组或指针。
您应该删除该函数的一个定义并正确声明该函数。
如果编译器允许使用可变长度数组,则应将函数声明为
void getMatrix(size_t n, double A[n][n]);
如果编译器不支持可变长度数组,则N必须是常量,并且该函数确实可以声明为
#define N SOME_VALUE
//...
void getMatrix( double A[N][N] );
并调用函数
在第一种情况下
getMatrix( N, A );
getMatrix( N, B );
在第二种情况下
getMatrix( A );
getMatrix( B );