Ob man für sowas dynamische Speicherallkation verwenden will, was std::vector ja mit sich bringt, ist natürlich ne andere Frage. Bei "PC-Programmieung" wohl kein allzu großer Haken...
Sorry, Du hast Recht, so wie er den Beispielcode gebaut hat, fällt die 0
weg.
Ich bezweifle allerdings, dass das auch wirklich seine Intention war.
NULL oder 0 als Ende-Marker wenn die Anzahl der Elemente nicht bekannt ist, ist so unüblich nicht. Im originalen Code war genau das der Fall, d.h. proc() hatte keine andere Möglichkeit das Ende des Arrays zu erkennen.
NULL oder 0 als Ende-Marker wenn die Anzahl der Elemente nicht bekannt
ist, ist so unüblich nicht.
getchar benutzt z.B. EOF (-1) als Endezeichen. Damit trotzdem jeder 8Bit-Wert gelesen werden kann, wird der Rückgabewert von unsigned char nach int gecastet.
Damit trotzdem jeder 8Bit-Wert gelesen werden kann, wird der Rückgabewert
von unsigned char nach int gecastet.
EOF muss nicht zwingend -1 sein nach standard. Es muss nur negativ sein. Es ist auch nicht garantiert, dass es keinen gültigen Wert für char darstellt. Deshalb gibt es zusätzlich die Funktion feof().
Korrekt, die "0" ist kein Inhalt, der regulär vorkommt und soll als Endmarker herhalten. Mir ist inzwischen klar, dass ich das gar nicht brauche und verwende es auch nicht mehr:
Du solltest dir überlegen, den vector per Referenz zu übergeben, denn sonst wird er jedes mal für den Funktionsaufruf komplett in einen neuen vector kopiert.