Fehler: cannot convert `int (*)[2]' to `int**' in initialization

S

Sternenjaeger

Grünschnabel
ich versuche gerade, ein Programm zu compilieren.... aber er bricht immer mit dieser Fehlermeldung ab.

Die Zeile, um die es geht lautet:

int **fildes = new int[sequenz_laenge-1][2];


fildes soll spaeter Deskriptoren fuer Pipes beinhalten... (bloede Zeiger *seufz*)
 
Hm... weiss nicht, inwieweit das hilft, aber man kann ja auch die C-Funktion malloc zum Speicher reservieren verwenden.
 
Du bist stolperst ueber den eher subtilen Unterschied zwischen Zeigern und Feldern gestolpert. Felder sind feste Bereiche im Speicher, ihr Ort aendert sich waehrend des Programmes nicht. Zeiger zeigen auf Bereiche im Speicher (z.B. auf den Beginn eines Feldes) und koennen waehrend des Programmablaufes auf unterschiedliche Bereiche zeigen.

Wenn das alles zu kompliziert klingt, mach Dir nichts drauss: praktisch musst Du ein zweidimensionales, dynamisches Feld in zwei Schritten anlegen:

Code:
int **feld = new int* [dim1];
for (int i = 0; i < dim1; ++i) {
   feld[i] = new int [dim2];
}
Zum Freigeben gehst Du rueckwaerts vor:
Code:
for(int i = 0; i < dim1; ++i) {
  delete[] feld[i];
}
delete [] feld;
 

Ähnliche Themen

deprecated conversion from string constant to ‘char*’

Compiler bricht mit Fehler ab

FC6 + vmware player

Suse Partitionsfehler 3027

GCC spuckt massig Fehler bei makescripts aus

Zurück
Oben