Thread Rätsel der Woche 2007/2: viel Spaß beim Rätseln (35 answers)
Opened by Ishka at 2007-02-05 14:03

murphy
 2007-02-15 01:48
#74034 #74034
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
@esskar: Schon klar. Was ich eigentlich sagen wollte, aber unzulässig verkürzt habe, ist, dass in C Strings einfach als char * übergeben oder in Variablen gespeichert werden, weshalb das Terminieren der Strings durch ein Nullzeichen nötig wird. Das ist natürlich ineffizient -- immerhin muss jedesmal, wenn die Länge eines Strings bestimmt werden soll, durchgezählt werden. Im Gegensatz dazu behandelt D Strings als dynamische Arrays, wobei char[] in D sozusagen einer Struktur wie struct { size_t length; char *ptr; } ; in C entspricht, also eine eingebaute Längenangabe hat. Das ist sicherer und schneller als die C-Lösung. Wenngleich man in D tatsächlich auf die Felder length und ptr eines dynamischen Arrays zugreifen kann, so wird natürlich auch weiterhin die C-Syntax der Arrayzugriffe (plus Erweiterungen wie Slices) unterstützt.
When C++ is your hammer, every problem looks like your thumb.

View full thread Rätsel der Woche 2007/2: viel Spaß beim Rätseln