#include <stdio.h>
void f(int *app[][20]) {
int i, j;
for (i =0; i< 20; i++){
for (j=0; j<20; j++){
*app[i][j] = i;
}
}
}
int main() {
int app[20][20];
int i, j;
f(&app);
for (i =0; i< 20; i++){
for (j=0; j<20; j++){
printf("i %d, j%d val= %d\n", i, j, app[i][j]);
}
}
return 0;
}
我到底在做什么错?我没有收到任何错误,但存在细分错误,我也不知道为什么。
te.c:15:5: warning: passing argument 1 of ‘f’ from incompatible pointer type
f(&app);
^
te.c:3:6: note: expected ‘int * (*)[20]’ but argument is of type ‘int (*)[20][20]’
void f(int *app[][20]) {
void f(int *app[][20]) { /* a 2d array of pointers to int */
应该
void f(int app[][20]) { /* a pointer to an array of 20 int's */
或者
void f(int (*app)[20]) { /* a pointer to an array of 20 int's */
*app[i][j] = i;
应该
app[i][j] = i; /* you don't need to dereference */
f(&app);
应该
f(app);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句