3 Stimmen

C Zweidimensionale Arrays zuweisen

Ich versuche, ein 2D-Dimension-Array von Dateideskriptoren zu allozieren ... Also bräuchte ich so etwas wie das fd[0][0] fd[0][1]

Bisher habe ich codiert:

void allocateMemory(int row, int col, int ***myPipes){
    int i = 0,i2 = 0;
    myPipes = (int**)malloc(row * sizeof(int*));
    for(i = 0; i < row;i++){
       myPipes[i] = (int*)malloc(col * sizeof(int));
    }
  }

Wie kann ich alles auf Null setzen? Im Moment erhalte ich eine Segmentierungsfehler, wenn ich versuche, einen Wert zuzuweisen...

Danke

3voto

David Wolever Punkte 138377

Also, zunächst musst du einen Zeiger auf myPipes übergeben:

void allocateMemory(int rows, int cols, int ***myPipes) { ... }

Dann ist es einfach:

*myPipes = malloc(sizeof(int) * rows * cols);

Und natürlich würdest du es so aufrufen:

int **somePipes;
allocateMemory(rows, cols, &somePipes);

2voto

frankc Punkte 10886

Kurze Antwort: Ändern Sie Ihr innerstes malloc zu einem calloc.

Lange Antwort von der c-FAQ: http://c-faq.com/~scs/cclass/int/sx9b.html

Was Sie verstehen müssen, ist, dass C keine Möglichkeit hat, ein echtes mehrdimensionales Array zuzuweisen. Stattdessen haben Sie einfach einen Zeiger auf ein Array von Zeigern. Behandeln Sie Ihre Datenstruktur als solche und alles wird gut.

0 Stimmen

Der Link ist leider nicht mehr gültig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X