我有警告:
note: expected ‘float (*)[100]’ but argument is of type ‘float (*)[100][100]’
我的功能如下:
int readfile (float macierz_A[MAXSIZE][MAXSIZE], float macierz_B[MAXSIZE][MAXSIZE])
...
float A[MAXSIZE][MAXSIZE];
float B[MAXSIZE][MAXSIZE];
int r1;// = 3;
r1 = readfile(&A, &B);
有什么想法吗?
答案 0 :(得分:3)
尝试改变这一点:
r1 = readfile(&A, &B);
进入这个:
r1 = readfile(A, B);
请注意&已被删除。以非常简单的方式说,您将指针传递给多维数组,而不是多维数组。 (正如您在函数声明中声明的那样)
答案 1 :(得分:3)
void f(int p[M][N]);
相当于
void f(int (*p) [N]); //pointer to array of N elements
在您的情况下,N为100,编译器期望表达式为int(*)[100]
。但由于A(大概)类型为int[100][100]
,因此&A
的类型为int(*)[100][100]
,这就是错误告诉您的内容。你必须通过A,而不是它的附录,即
readfile(A, B)
答案 2 :(得分:1)
这是间接的一个层次
r1 = readfile(&A, &B);
试试
r1 = readfile(A, B);
或者,如果您实际想要指向每个矩阵的指针,请将该函数更改为
int readfile (float (*macierz_A)[MAXSIZE][MAXSIZE], float (*macierz_B)[MAXSIZE][MAXSIZE])
答案 3 :(得分:1)
确定。这里的问题是你传递A和B的地址,两者都是二维数组,但是在函数“readfile”中你只接受float [100] [100]的值
这是一个警告而不是错误的原因是因为:float [] []也被编译器解释为float * [](就像int *相当于int [])。