क्या मैं जान सकता हूँ कि मैं कहाँ गलत हूँ? मुझे इसे प्रिंट करने के लिए मैट्रिक्स को फ़ंक्शन में पास करने की आवश्यकता है, लेकिन जब मैं इसे संकलित करता हूं तो मुझे कुछ त्रुटियां मिलती हैं .. चूंकि मैं एक मैट्रिक्स पास कर रहा हूं, मैंने ** पी का उपयोग किया है लेकिन मुझे पता नहीं है कि मुझे संकलन त्रुटि क्यों मिलती है।

यह संकलन त्रुटि है:

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
yepitis 15 जिंदा 2020, 17:19

1 उत्तर

सबसे बढ़िया उत्तर

जैसा कि @some Programmer dude लिंक किया गया है, स्थिर सीमाओं का एक मैट्रिक्स एक पॉइंटर से पॉइंटर की तुलना में अलग तरह से संग्रहीत किया जाता है, इसलिए ये प्रकार असंगत हैं।

फिक्स बहुत आसान है, बस प्रोटोटाइप बदलें:

void stampa(int p[MAX][MAX], int i, int j);
1
Kamila Szewczyk 15 जिंदा 2020, 15:11