Domanda

Trascorro il mio tempo sui linguaggi di alto livello è improvvisamente venuto in mente che non conoscevo la differenza tra un array di caratteri e una stringa. Penso che siano la stessa cosa, ma non è sicuro. C'è una differenza? E 'solo un array di caratteri con una certa astrazione?

È stato utile?

Soluzione

un array di caratteri è semplicemente un array di caratteri

una stringa è struttura di dati che utilizza un array di caratteri

alcune rappresentazioni stringa utilizzano un null-terminazione (come C), altri usano un prefisso di lunghezza

Altri suggerimenti

Una stringa di è un'astrazione, ma di un sequenza di caratteri. Non dice nulla di attuazione. Se si voleva creare un'implementazione String sulla base di una lista concatenata di caratteri non c'è nulla ti impedisce.

In un linguaggio come C, v'è molto poca differenza -. Solo che una stringa c è una serie con terminazione null di caratteri indirizzi successivi, che generalmente è accessibile tramite un puntatore

In un linguaggio OOP, una stringa sarà un oggetto di qualche classe String. Questo sarà probabilmente contenere i dati in un array di caratteri internamente, ma non c'è bisogno di sapere che. Un array di caratteri può essere solo un semplice array, ma una classe String in grado di fornire molte operazioni (stringhe, regex, ecc) sulle stringhe se il realizzatore decide di.

Ho usato per insegnare la programmazione, e questo è il modo che ho usato per spiegare questo particolare problema.

In primo luogo, concentrarsi su ciò che entrambe le cose hanno in comune : sia un array di caratteri e una stringa sono costituiti da una sequenza di caratteri. Essendo un sequenza implica che i personaggi sono ordinate e che essi possono essere enumerati, per esempio.

Ora concentrarsi su ciò che ciascuna delle due cose aggiungono, nei loro particolari diverso modi, per questo terreno comune.

char array aggiunge quello che ogni matrice è noto aggiungere:. Indicizzazione e accesso casuale ai singoli elementi

stringa , d'altra parte, aggiunge il fatto che la sequenza di caratteri è visto come un tutto con le sue proprietà. In alcune implementazioni, il raggiungimento di questo significa alterare il modo in cui i caratteri vengono memorizzati (aggiunta di una terminazione null in stringhe C, per esempio).

Questo approccio (guardare i punti in comune, poi come le cose divergono da loro) si è dimostrato utile in una varietà di situazioni.

Spero che questo aiuti.

C questi sono quasi la stessa, anche se una stringa avrà un carattere nullo supplementare alla fine.

In altre lingue (Java, C #, ecc), una stringa è un oggetto, mentre un array di caratteri è un array di caratteri ... (che sono i tipi di dati primitivi).

In genere, le stringhe sono implementate con array di caratteri.

La risposta in qualche misura dipende da quale lingua il vostro parlare. In .NET / C # stringhe mondo sono oggetti immutabili, mentre un array di caratteri è possibile aggiungere / modificare i valori facilmente nella matrice. Le stringhe possono essere trattati come array di caratteri in un modo di sola lettura, come si può scorrere i caratteri di una stringa.

In astratto penso che la più grande differenza è nel modo in cui si desidera lavorare con loro. Sei voler lavorare con un pezzo di testo, dici a mostrare un messaggio a un utente finale, o stai guardando una sequenza di caratteri, fare un po 'di elaborazione sulla lista? E 'tutto piuttosto soggettiva ad un certo livello.

String è un class in Java. Così ha gli attributi per esempio length. Così, quando si chiede la dimensione della stringa che restituisce semplicemente che, invece di calcolare il valore di volta in volta. It anche altri metodi per esempio indexOf, substring, ecc per rendere la vita facile, quindi non c'è bisogno di farlo da soli.

Una stringa stile C è rappresentato internamente da array di carattere con il '\ 0' alla fine, che indiciates fine della stringa.

In C ++, c'è una classe contenitore stringa definita in string.h che fornisce alcune tipiche operazioni di stringa per manipolare la stringa.

E 'dipende dalla lingua. Nei linguaggi C-ish, sono praticamente sinonimo. Si potrebbe rivendicare la differenza è che "stringhe" hanno un nul terminazione implicita, ma che sarebbe spaccare il capello.

Fortran è l'altro estremo. Ci array di caratteri e stringhe di caratteri sono completamente diversi tipi, con diverse operazioni disponibili per loro.

Una stringa è il vettore di caratteri terminato da carattere nullo ‘\ 0’

In C, una stringa è un array di caratteri terminati da un carattere nullo (\ 0) ma

In C ++, una stringa è una classe e usiamo suo oggetto e non v'è alcun carattere nullo alla fine ma una serie di caratteri contiene carattere nullo alla fine.

Inoltre, siamo in grado di utilizzare gli operatori con l'oggetto della stringa in C ++.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top