1. Introduzione
Il linguaggio C è ancora ampiamente utilizzato oggi nei campi della programmazione di sistema e della programmazione embedded. In questo linguaggio, stringhe e array sono elementi chiave per la gestione dei dati. Quando si impara C, è inevitabile comprendere la specifica unica in cui le stringhe sono trattate come “array di caratteri”.
Questo articolo approfondisce i concetti fondamentali delle stringhe e degli array in C, con l’obiettivo di risolvere le domande comuni che i principianti e i programmatori intermedi hanno riguardo alle “differenze e relazioni tra stringhe e array”.
Attraverso esempi di programmi reali, copriremo anche come dichiarare array e stringhe, le funzioni di base per la manipolazione delle stringhe e punti importanti sulla gestione della memoria. Questo ti aiuterà a lavorare con le stringhe in C in modo più sicuro ed efficiente.
2. Basi degli Array
Comprendere gli array in C è la base della manipolazione delle stringhe. In questa sezione, spiegheremo il concetto e l’utilizzo degli array.
Cos’è un Array?
Un array è una struttura che memorizza dati dello stesso tipo in posizioni di memoria contigue. Ad esempio, dichiarare un array int ti permette di gestire più interi contemporaneamente. In C, dichiari un array come segue:
int numbers[5]; // An array to store 5 integers
Questo codice dichiara un array di interi chiamato numbers e alloca memoria per memorizzare 5 interi. Accedi a ciascun elemento utilizzando un indice.
Dichiarazione e Inizializzazione degli Array
Puoi inizializzare un array contemporaneamente alla sua dichiarazione. L’inizializzazione significa impostare valori iniziali durante la dichiarazione.
int numbers[5] = {1, 2, 3, 4, 5}; // Declaration and initialization of an array
Qui, l’array numbers memorizza gli interi da 1 a 5 in ordine. Se ometti l’inizializzazione, l’array conterrà valori indefiniti (dati di scarto dalla memoria).
Layout della Memoria e Accesso agli Array
In C, gli array sono memorizzati in memoria contigua. Ad esempio, dichiarare int numbers[5] alloca posizioni di memoria consecutive per numbers[0] attraverso numbers[4].
Accedi agli elementi utilizzando indici, partendo da 0 fino a dimensione – 1.
printf("%d", numbers[0]); // Print the first element of the array
Utilizzando gli array, puoi gestire più elementi di dati dello stesso tipo sotto una sola variabile e operare su di essi in modo efficiente.
3. Basi delle Stringhe
In C, le stringhe non sono solo sequenze di caratteri: sono trattate come array speciali. Questa sezione spiega i componenti e la manipolazione delle stringhe in C.
Cos’è una Stringa?
In C, una stringa è rappresentata come un array di caratteri con un carattere nullo terminante ('\0') alla fine. Questo carattere nullo segna la fine della stringa e gioca un ruolo critico nelle operazioni sulle stringhe.
Ad esempio, puoi definire una stringa in questo modo:
char greeting[6] = {'H', 'e', 'l', 'l', 'o', ' '};
Qui, l’array greeting memorizza i 5 caratteri “Hello,” seguiti da un carattere nullo. In C, le stringhe sono identificate dalla presenza di '\0' alla fine.
Dichiarazione e Inizializzazione delle Stringhe
Puoi inizializzare le stringhe direttamente come array di caratteri. Comunemente, utilizzi letterali di stringa per la dichiarazione e l’inizializzazione:
char greeting[] = "Hello";
Con questa forma, il compilatore aggiunge automaticamente il carattere nullo, rendendo la dimensione dell’array greeting pari a 6 (5 caratteri + nullo). Se ignori il carattere nullo, può causare risultati errati.
Letterali di Stringa vs. Array di Caratteri
In C, i letterali di stringa e gli array di caratteri sono simili ma diversi. Un letterale di stringa è dichiarato come const char*, rendendolo immutabile.
const char *greeting = "Hello"; // String literal
Un array di caratteri, d’altra parte, può essere modificato come un array normale. Ad esempio, char greeting[] = "Hello"; permette modifiche ai suoi elementi.
greeting[0] = 'h'; // Change "Hello" to "hello"
Comprendere la differenza aiuta nella gestione della memoria e nell’evitare errori.



