Thread Rätsel der Woche 2007/2: viel Spaß beim Rätseln
(35 answers)
Opened by Ishka at 2007-02-05 14:03
@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.
|