Natürlich wird der Doppelpointer benötigt, zumindest in C, und wenn man es so macht wie du. mymalloc() und myrealloc() verändern lediglich die lokale Variable "data", deren Gültigkeitsbereich nur bis zum Funktionsende reicht.
Dementsprechend solltest du hier
beide Male den gleichen Wert für "a=" ausgegeben bekommen.printf("&a=%p, a=%p\n",&a,a);
myrealloc(a, 6);
printf("&a=%p, a=%p\n",&a,a);
Und daß die Zuweisungen hinterher funktionieren, hat überhaupt nichts zu sagen, du pinselst halt über deinen zugewiesenen Speicherbereich hinüber, das kann später wildeste Auswirkungen haben. (C ist halt nicht Pascal oder Java. BTW: Nimm mir es nicht übel, aber kaufe dir ein Buch, welches solche elementaren Grundlagen besser als dein vorhandenes Lehrbuch vermittelt.)
Lesezeichen