Ich habe gelesen, dass, um eine Funktion mit einem zweidimensionalen Array als Parameter zu deklarieren, ich die Anzahl der Spalten des Arrays angeben muss, aber wenn ich die Größe der Matrix nicht kenne Verwenden Sie den Doppelzeiger. Allerdings kann ich diesen Prozess nicht gut verstehen, kann mir jemand ein kurzes und einfaches Beispiel für diese Art von Funktion geben?Funktion mit zweidimensionalem Array als Parameter
Danke
Auch habe ich versucht, ein Programm zu schreiben, aber es gibt mir eine Warnung.
#include<stdio.h>
int diagonal(int**,int);--->first note
int main(){
int N;
scanf("%d",&N);
int array[N][N];
int i;
int j;
printf("Insert the numbers:\n");
for(i=0;i<N;i++){
for(j=0;j<N;j++){
scanf("%d",&array[i][i]);
}
}
diagonal(&array[N][N],N); ---->second warning
}
int diagonal(int**A,int N){
int i;
int condition=0;
for(i=0;i<N-1;i++){
if(A[0][0]!=A[i+1][i+1]){
return -1;
}else{
condition=1;
}
}
if(condition==1){
int val=A[i][i];
int sum= N*val;
return sum;
}
}
Compiler Ausgang:
3|note: expected 'int **' but argument is of type 'int *'|
17|warning: passing argument 1 of 'diagonal' from incompatible pointer type|
||=== Build finished: 0 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
Das Programm sollte eine Matrix scannen, und die Summe der Elemente auf der Hauptdiagonale zurück, wenn die Elemente auf der Diagonalen den gleichen Wert haben return -1, falls nicht.
Ich bin Entschuldigung, wenn die Frage dumm klingt, aber ich bin ein Anfänger. In der Deklaration sollte ich nicht die "N" Parameter löschen? ich meine, wenn ich int diagonal setzen (Int N, Int A [N] [N]); der Compiler sagt, dass "N" nicht deklariert ist und wenn ich "N" lösche, wird das Programm nicht ausgeführt –
@ GiorgioM. In den meisten Fällen sind die Parameternamen in einer Deklaration nicht erforderlich, aber in diesem Fall ist es erforderlich, dass der Compiler weiß, dass es sich um ein Array variabler Größe handelt und was die Größe angibt. Der Versuch, den Array-Parameter als int [] [] zu deklarieren, ist eine unvollständige Deklaration. – dbush
Ahhh vergiss es jetzt funktioniert es. Vielen Dank und danke an alle Leute, die geantwortet haben –