2D Integer Array an eine Funktion übergeben

kirashet

Mitglied
Hallo Leute,

ich muss für die Schule eine kleine Aufgabe lösen.
Die Übung dient dazu den Umgang mit Feldern zu erlernen.

Jetzt hab ich die Situation, dass ich ein 2D Integer Array erstelle, welches ich dann einer Funktion übergeben möchte. Dort soll dem Array Werte zugewiesen werden.

Ein kleines Beispiel zu erläuterung:

Code:
const int m_quarter = 4;
const int m_seller  = 3;


void main( void ) {
     int **exchange[m_quarter][m_seller]={0};

     clearfield( **exchange );
}

void clearfield( int **_field) {
     for (int i=0;i<m_quarter;i++) {
         _field[i][0] = 0;
     }
}

Wenn jetzt den Feld die 0 zugewiesen werden soll, bringt er folgende Fehlermeldung:

Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: "Zugriffsverletzung bei Adresse xxxxx." usw.

Benutze den Borland Builder 5.

Ich komme eigentlich von der JAVA-Welt und komme mit den Pointer-Dingern überhaupt nicht zurecht.

Auf einen kleinen Hint eurerseits wäre ich sehr dankbar...

Gruß
Kirashet, der gleich einen Vogel kriegt :(
 
Zuletzt bearbeitet:
Code:
int **exchange[m_quarter][m_seller]={0};
]
Was du hier definierst, ist ein zweidimensionales Array von Pointer-auf-Pointer-auf-Integers und kein zweidimensionales Int-Array.

Mach es so:

Code:
int exchange[m_quarter][m_seller]; //Initialisierung unnötig, da clearfield das erledigen wird

clearfield( exchange ); // keine Sternchen hier!

void clearfield( int _field[][] )  // <- nicht ganz sicher, es geht aber auch int** _field
{
     for (int i=0;i<m_quarter;i++) {
         _field[i][0] = 0;
     }
}
Bei clearfield() löschst du übrigens nur die erste Spalte/Zeile. Ist das Absicht? Um alles zu löschen, solltest du zwei verschachtelte Schleifen verwenden.
 
Zurück