001
30.12.2015, 16:28 Uhr
ao
(Operator)
|
Bei jedem Aufruf von addNumber wird für valuesNew ein neues Array angefordert, das um 1 Element länger ist als das letzte. In dieses neue Array werden die alten Daten hineinkopiert, und der neu hinzugekommene Wert (Parameter value) wird richtig einsortiert.
Am Ende der Funktion wird der Zeiger auf das neue Array in values gespeichert und valueCount inkrementiert. Vom Ende des ersten Aufrufs an gibt es also in values ein gültiges Array, aus dem vom zweiten Aufruf an Daten kopiert werden können.
Im ersten Aufruf zeigt values noch auf den Initialwert NULL. Da aber gleichzeitig valuecount noch == 0 ist, wird die for-Schleife nicht betreten, weil die Eintrittsbedingung (i < valueCount) nicht erfüllt ist. Es wird also kein Schaden angerichtet.
Der Code ist ziemlich tricky, aber er scheint richtig zu sein. Trotzdem würde ich Punktabzug geben dafür, dass jeglicher Kommentar fehlt. Sowas darf man nicht schreiben, ohne zu kommentieren. Dieser Post wurde am 30.12.2015 um 16:32 Uhr von ao editiert. |