int array und pointer darauf
-
hallo ich habe folgenden code:
int main() { int i,j; int *visited[n][n]; for(i=0;i<n;i++) { for(j=0;j<n;j++) { visited[i][j] = 0; } } func1(visited); /* ENDE */ exit(0); } void func1(int *arr) { int next; next = moeglich(arr); /* next weiter berechnen */ } int moeglich(int *arr2) { if(visited[1][1]) { /* tu was */ }
kümmert euch mal nicht um die sinnvolligkeit des code's
ich bekomme folgenden compilerfehler:
error: subscripted value is neither array nor pointerund zwar aus der zeile :
if (visited[1][1])wie muss ich es hier machn, dass ich so auf das int array zugreifen kann!
-
Hallo,
du hast in deinem Beispiel mehrere Fehler gemacht. Hier erst mal
der bereinigte Code:#include <stdio.h> #include <stdlib.h> int moeglich(int arr2[10][10]) { if(arr2[1][1]) { /* tu was */ } return 1; } void func1(int arr[10][10]) { int next; next = moeglich(arr); /* next weiter berechnen */ } int main() { int i,j; int visited[10][10]; for(i=0;i<10;i++) { for(j=0;j<10;j++) { visited[i][j] = 0; } } func1(visited); /* ENDE */ exit(0); }
Und nun vielleicht noch etwas zu deinen Fehlern:
int *visited[n][n];
Hier definierst du dir ein zweidimensionales Feld von Typ int*, also Zeiger
auf einem int, verwendest die Einträge aber als normale int. Dazu kommt noch
dass in ANSI C Arrays variabler Länge nicht erlaubt sind. Richtig wäre also:int visited[10][10];
wenn das Array maximal 10*10 Elemente fassen soll. Ansonsten würde ich mit
malloc arbeiten.Fehler Nr.2:
void func1(int *arr)
Der Typ ist von arr ist nicht der gleich, wie visited. Richtig wäre:
void func1(int arr[10][10])
oder, wenn du mit malloc arbeitest
void func1(int **arr)
Den gleichen Fehler hast du bei der Funktion moeglich gemacht.
Fehler Nr.3:
Du hast in der Funktion moeglich in der Zeileif(visited[1][1]) {
den falschen Bezeichner für die Variable verwendet. In der
Funktionsdeklaration hast du die Variable arr2 genannt, so musst du
die auch anschließend im Code verwenden. Aber ich glaube Fehler Nr.2
ist in deinem Originalcode ausschlaggebend.Ach ja, bitte passe demnächst deine Minimalbeispiele so an, dass sie
bis auf den Fehler den du hier erfragst, wenigstens kompilieren.
Du hast einige Klammern vergessen, die Reihenfolge der Funktionen
war auch falsch, keine includes dabei (ok, brauchtest vielleicht auch
keine) etc.Na dann,
viel Spaß dabei
mcr