Gawayn
Erfahrenes Mitglied
words ist ein char*-Zeiger, also ein Zeiger auf einen Char. Einem Char kannst du keinen Zeiger zuweisen. Du brauchst also einen Zeiger auf einen Zeiger auf einen Char, um ein zweidimensionales Array zu erzeugen.
Allerdings kannst du ein solches Array auch einfacher deklarieren, z.B.:
Du berechnest dir deinen Offset in das Array also selbst. Mit einem Makro geht das natürlich etwas schöner (aber da muss man immer etwas aufpassen, dass man keinen Schmuh treibt):
Sollte deine Zeilenlänge eine Zweierpotenz sein, fällt außerdem die Multiplikation weg, denn die kannst du dann durch ein Linksshift ersetzen. (Ich denke, das würde der Compiler aber auch automatisch machen während der Optimierung.)
Gawayn
Code:
char **words ;
Code:
char *words = (char*)malloc( sizeof( char )*ZEILEN_LAENGE*SPALTEN_HOEHE ) ;
words[y*ZEILEN_LAENGE+x] = Wert ;
Code:
#define WORDS(x,y) (words[(y)*ZEILEN_LAENGE+(x)])
WORDS(2,7) = Wert ;
Gawayn
Zuletzt bearbeitet: