Ripetiamo la spiegazione della "Guida di Programmazione C di base" presente su questo sito:
«Adesso è fondamentale definire il concetto di variabile, visto che nelle prossime lezioni faremo largo uso di questo termine. Pensiamo, ad esempio, a quando salviamo un numero di telefono di un nostro amico sul cellulare; se vogliamo chiamare il nostro amico, basterà inserire il suo nome (nome della variabile) ed il cellulare comporrà automaticamente il numero di telefono (valore della variabile). Si può vedere quindi che una variabile esiste in funzione del nome e del suo valore corrispondente; la comodità risiede (come nel cellulare) nel poter usare un nome per valori, che possono essere numeri o lettere, di grande entità o difficili da ricordare. Un altro vantaggio, non da sottovalutare, è la possibilità di usare il nome della variabile al posto del suo valore per eseguirvi sopra delle operazioni, con la possibilità, in seguito, di modificare il valore come e quante volte vogliamo.»
Detto con un gergo più tecnico, le variabili non sono altro che dei contenitori, identificati da un nome univoco, di un qualsiasi valore, sia esso un numero o una stringa. Per poter fare qualcosa di concreto all'interno dei programmi dobbiamo utilizzare le variabili in cui il pregio di avere un corrispondente nome-valore permette di gestire i cambiamenti di valore ad esse associati, fornendo quindi quella dinamicità necessaria ad eseguire operazioni complesse e/o ripetitive con il minimo sforzo.
Le variabili vengono definite da un tipo e da un nome.
Il nome per identificare una variabile (o una funzione o una costante) viene comunemente riferito come identificatore.
Un identificatore è costituito da una o più lettere, cifre o caratteri e deve iniziare con una lettera o il carattere di sottolineatura (underscore "_" ); la loro lunghezza massima dipende dal compilatore, ma generalmente non si possono superare i 31 caratteri, ed inoltre il C è case-sensitive, quindi si fa distinzione tra lettere maiuscole e lettere minuscole. Questa piccola parentesi è dovuta, visto che in seguito parleremo appunto delle funzioni e delle costanti per le quali dovranno essere chiare le regole per assegnare un nome "formalmente" corretto.
Il tipo della variabile indica quale tipo di valori può assumere il contenuto della variabile stessa, si può ben capire che un tipo intero conterà soltanto dei numeri, mentre il tipo carattere conterrà solamente lettere dell'alfabeto, numeri e simboli; Va fatto notare che l'intero '7' è estremamente diverso dal carattere '7', infatti l'intero viene trattato come un numero e su di esso si possono svolgere le più svariate operazioni matematiche, mentre il carattere viene gestito come un simbolo (si tratti di una lettera o di un numero).
Tutto ciò ha una spiegazione logica che risiede nella rappresentazione del numero stesso; se l'intero 7 viene rappresentato da un byte (otto bit) come 00000111, il carattere 7 viene rappresentato con un byte ma seguendo quella che è la codifica ASCII, quindi appare, a livello di bit come 00110111 che equivale ad una rappresentazione intera di 55. Le operazioni che permettono di convertire una variabile da un determinato tipo ad un altro (ad esempio da una lettera ad un numero) prendono il nome di casting, trattato nel capitolo 12 di questa guida.
Tutte le variabili, prima di essere utilizzate, devono essere dichiarate, cioè deve essere detto al compilatore il tipo della variabile ed il suo nome (es. int x), questo per permettergli di allocare la memoria necessaria alla variabile stessa; la dichiarazione generalmente viene fatta all'inizio del programma, ma in programmi di grandi dimensioni può trovarsi anche in altre posizioni (o altri file), ma bisogna ricordare che comunque la dichiarazione di una variabile può essere fatta una ed una sola volta.
Successivamente la variabile deve essere inizializzata, cioè le deve essere assegnato un valore, operazione che generalmente viene fatta contemporaneamente alla dichiarazione.
// solo dichiarazione
int x;
// inizializzazione
x = 10;
// dichiarazione ed inizializzazione
int y = 15;