Am Sam, 2002-08-03 um 22.56 schrieb Bernd Brodesser:
* Jan Trippler schrieb am 03.Aug.2002:
On Sam, 03 Aug 2002 at 20:09 (+0200), Thorsten Haude wrote:
* Jan Trippler
[02-08-03 16:53]: Es geht doch nur darum, daß diese ganze C-Eigenheit mit dem Zeiger-auf-Chararacter offensichtlich und bekannterweise nicht wasserdicht ist. Darum sollte man bei ihrer Benutzung keine Haare spalten, sondern auf Nummer sicher gehen.
Ein String ist immer ein Zeiger auf ein Byte, bei jeder Programmierpsrache. Kommt darauf an, wie Du das meinst. Man kann String auch als abstraktes Konzept oder als Datentyp zur Verarbeitung von textuellen Zeichenketten auffassen.
Es ist nur manchmal gut vor dem Anwender versteckt, aber wie soll man sonst ein String definieren, wenn nicht als Zeiger? S.o.
Viele Programmiersprachen kennen derartige Datentypen, deren Details ein Programmierer nicht kennen soll/darf/muss. Pascal/Modula Strings z.B. führen Längenfelder mit sich und entsprechen inetwa folgendem C-Struct struct String { size_t len ; char *char_array; } Auch das C++ string<T>-Template arbeitet nach ähnlichen Muster. Vorteil: Anders als in C braucht man sich nicht um terminierende \0-en zu kümmern: Nachteil: In der Regel deutlich höherer Verwaltungsoverhead, spürbare Geschwindigkeitseinbussen und Probleme bei Low-Level IO (Fehlt in der Pascal-Sprachdefinition völlig). Ralf