Frage von Alinchen24, 44

was mache ich falsch (Sprache:C)?

int size = zeileM1 * spalteM2;

int matrixA[][]=malloc(size*sizeof(int));

also ein teil meines codes sieht so aus und der compiler meckert, das der Feldtyp ein unvollständigen Elementtypen hat.

zeile und spalte sind bei mir einfache int werte und wollte im weiterern verlauf eine matrixmultiplikation schreiben. lg Alina

Antwort
von Shiftclick, 24

matrixA ist ein Zeiger auf int-Zeiger.

Mit dem malloc möchtest du Speicher für die Zeilen reservieren. Das sind aber keine Integer sondern Pointer auf Integer. Du müsstest schreiben malloc(size*sizeof(int*)).

Vielleicht hilft diese Seite weiter: http://openbook.rheinwerk-verlag.de/c\_von\_a\_bis\_z/014\_c\_dyn\_speicherverwa...


Kommentar von Alinchen24 ,

Danke :)

Kommentar von maximilianus7 ,

also geht's denn jetzt? der hinweis von Shiftclick  ist von der sache her richtig, dürfte aber dem compiler egal sein.

ich denke typ[ ][ ] geht nicht. nur das letzte [ ] darf leer sein.also:

int matrixA [zeileM1][ ] = ...

es ist dir doch bewusst, dass in C (und verwandschaft) eine matrix nicht als rechteckigen speicherbereich abgelegt wird, d.h. dass formeln wie etwa
zelle = zeilenindex * spaltendimension + spaltenindex

nicht anwendbar sind.

Keine passende Antwort gefunden?

Fragen Sie die Community