Erzeugen von Matrizen
-
Moin Leute. Kann mir einer mal erklären,
warum bei unten aufgeführter Fuinktion in Zeile 9 zwei Dinge vorm = stehen. Ebenso ist es auch in 15, 16.
Was soll das???
Danke
7 Matrix newMatrix( int w, int h ) 8 { 9 Matrix res = malloc( h * sizeof( Row ) ); 10 11 if ( res ) { 12 Row rows = malloc( h * w * sizeof( Element ) ); 13 14 if ( rows ) { 15 Matrix m = res; 16 Row r = rows; 17 18 while ( h-- ) { 19 *m++ = r; 20 r += w; 21 } 22 23 return res; 24 } 25 } 26 /* heap overflow */ 27 exit( 1 ); 28 }
-
Dort werden zwei Variablen auf einmal definiert und deklariert.
Es ist einfach kürzer zu schreiben.
Eine andere und auch richtige Schreibweise ist es Definition und Deklaration in zwei Zeilen zu schreiben:.. Matrix m; Row r; m = res; r = rows; ..
Wie gesagt, es ist beides gültig!
Aber es ist kein Ansi-C, es sieht mehr nach c++ aus:
In C muss die Deklaration von allen Variablen am Anfang der Methode stehen. (Vieleicht deshalb deine Verwirrung)