Nel C
, il compilatore ha un puntatore all'inizio della stringa e ha un simbolo di fine ('\0'
). Se un utente desidera calcolare la lunghezza della stringa, il compilatore deve contare gli elementi dell'array di stringhe finché non trova '\0'
.Come appaiono le stringhe dal punto di vista del compilatore?
In UCSD-strings
, il compilatore ha la lunghezza della stringa nei primi simboli.
E cosa pensa il compilatore di C#-strings
? Sì, dal punto di vista dell'utente String
è un object
che ha un campo Length
, non sto parlando di cose di alto livello. Voglio conoscere algoritmi profondi; ad esempio, in che modo il compilatore calcola la lunghezza della stringa?
L'assunzione di C è errata. Un compilatore C sa ** esattamente ** per quanto tempo ogni stringa è. Per vedere ciò, chiama 'sizeof' sulla stringa (non su un _pointer to_ la stringa!). – MSalters
Normalmente, vorrei chiudere questo come un dupe ma i duplicati sono cattivi. http://www.codeproject.com/Articles/3377/Strings-UNDOCUMENTED – usr
@MSalters Stai confondendo concetti. Array e stringhe di entità diverse e hanno diverse operazioni associate a loro. Sono correlati, ma sono astrazioni diverse e non dovrebbero essere mescolati. –