Почему я получаю ошибку компиляции при передаче матрицы функции - PullRequest
0 голосов
/ 15 января 2020

Могу ли я знать, где я не прав? Мне нужно передать матрицу в функцию для ее печати, но когда я компилирую ее, я получаю некоторые ошибки .. Поскольку я передаю матрицу, я использовал ** p, но я не знаю, почему я получаю ошибку компиляции.

Это ошибка компиляции:

ricorsione_TdE_19_02_2018.c: In function ‘main’:
ricorsione_TdE_19_02_2018.c:26:9: warning: passing argument 1 of ‘stampa’ from incompatible pointer type [-Wincompatible-pointer-types]
   26 |  stampa(M,i,j);
      |         ^
      |         |
      |         int (*)[2]
ricorsione_TdE_19_02_2018.c:4:19: note: expected ‘int **’ but argument is of type ‘int (*)[2]’
    4 | void stampa(int **p, int i, int j);
#include <stdio.h>
#define MAX 2

void stampa(int **p, int i, int j);

int m=0,n=0;

int main(){

    int i,j,M[MAX][MAX];

    for (i=0; i < MAX; i++){
        for (j=0; j < MAX; j++){
            printf ("Inserisci il valore della cella M[%d][%d]: ", i, j);
            scanf("%d", &M[i][j]);
        }
    }

    for (i=0; i < MAX; i++){
        for (j=0; j < MAX; j++){
            printf("%d", M[i][j]);
        }
        printf("\n");
    }

    stampa(M,i,j);

    return 0;
}

void stampa(int **p, int i, int j) {

    for (i=0; i < MAX; i++){
        for (j=0; j < MAX; j++){
            printf("%d", p[i][j]);
        }
        printf("\n");
    }
return;
}

1 Ответ

1 голос
/ 15 января 2020

Поскольку @ Некоторые программисты чувак связаны, матрица постоянных границ хранится не так, как указатель на указатель, поэтому эти типы несовместимы.

Исправление довольно простое, просто изменить прототип:

void stampa(int p[MAX][MAX], int i, int j);
...