Ich bilde mir ein in meinem Lehrbuch gelesen zu haben
&matrix
wäre die Anfangsadresse der gesamten matrix.
Es leuchtet mit jedoch ein, daß matrix bereits ein Zeiger auf das erste Element einer matrix ist.
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von MOS am
Ich bilde mir ein in meinem Lehrbuch gelesen zu haben
&matrix
wäre die Anfangsadresse der gesamten matrix.
Es leuchtet mit jedoch ein, daß matrix bereits ein Zeiger auf das erste Element einer matrix ist.
ZitatIch bilde mir ein in meinem Lehrbuch gelesen zu haben &matrix wäre die Anfangsadresse der gesamten matrix.
Richtig. Es ist aber nicht die Adresse, wo der etwaige Zeiger auf die Matrix gespeichert ist.
Generell holt "&" nur die Adresse, wo der Inhalt einer Variable gespeichert ist. Bei Array-Namen ist das effektiv redundant und ändert eben nur den Typ in "Zeiger auf Array".
Daher kannst Du auch nicht zwei verschiedene Variablen mit der Deklaration "T a,b;" - ohne Pointer! -jemals dazu bringen, daß sie auf den gleichen Speicherort zugreifen (so daß eine Änderung des Inhalts von a sich gleichzeitig auf b auswirkt). Dazu brauchst Du dann schon zwei Variablen mit der Deklaration "T *a, *b;", wonach Du dann beiden den gleichen Pointer zuweist, und dann haben *a und *b stets den gleichen Inhalt - das ist dann Aliasing.
Jetzt sei mir mal die Frage gestattet: hast Du dir mittlerweile mal mein "mat_mult" genauer angeschaut und auch mal selbst kompiliert? Ich hab' das nicht nur als Spielzeug gebaut, "matrix.h" ist mittlerweile in vielen meiner Programme im Einsatz und eine der wenigen Sachen in C, welche ich für weitgehend kugelsicher halte. Wenn diese Header-Datei, ähnlich wie <stdarg.h> für variable Parameterlisten, damals schon in C89/C90 mit in den Standard aufgenommen worden wäre, würden wir uns heute nicht mit den halb-garen "conformant arrays" rumärgern müssen...
Mike: ich habe Dein Matrizenprogramm heruntergeladen aber noch nicht im Einzelnen angesehen.
Vorher muß ich noch einige Knoten in meiner Denke auflösen.
momentan sieht es bei mir folgendermaßen aus:
Es sei int array[2][4]={{0,1,2,3},{4,5,6,7};
array ist das gesamte {{0,1,2,3},{4,5,6,7}}.
zugleich ist array ein Zeiger auf das erste Element von array sprich auf {0,1,2,3}
array ist gleichbedeutend mit array[0] das ebenfalls auf das erste Element {0,1,2,3} deutet.
*array ist das erste Element von array eben {0,1,2,3}
zugleich deutet *array auf das erste Element von {0,1,2,3} eben auf 0.
**array ist nun das erste Element von {0,1,2,3} eben 0.
ich hoffe ihr könnt mir folgen.