Nella guida precedente abbiamo parlato delle variabili e delle operazioni che si possono eseguire con esse.
E' possibile anche usare le variabili in funzioni (parleremo più avanti delle funzioni) come la printf() (La funzione printf() stampa a video gli argomenti passati).
Ecco un esempio di uso delle variabili con la funzione printf() :
- Codice:
-
int x = 3;
printf ("x vale %d" ,x);
L'output sarà x vale 3.
Notiamo che è presente una stringa di formato ( le stringhe di formato ci permettono di stampare le variabili ) che ci consente di stampare a video il valore della variabile presente subito dopo i doppi apici "" .
Ecco i principali formati di stringa :
- %c variabili char;
- &d,%i valori in formato decimale;
- %x,%X valori in formato esadecimale;
- %o valori in formato ottale;
- %l,%ld variabili long int;
- %u variabili unsigned;
- %f variabili float;
- %lf variabili double;
- %p indirizzo esadecimale di una variabile;
- %s stringhe di testo;
- %n scrive i byte scritti sullo stack dalla funzione printf().
Nel c possiamo anche eseguire operazioni sulle variabili :
- Codice:
-
char c = 65; // equivale a scrivere A il numero 65 indica la lettera A
cha c += 4; // incrementiamo il valore di c di 4 unità così c vale 69 cioè E
printf ( " a = %c\n" , c); // l'output sarà a = E , \n serve per andare a capo.
E' importante ricordare che le variabili vanno dichiarate o all'inizio del programma oppure all'inizio della funzione che le usa ( ricordate di non dichiarare le variabili in altri posti o usare una variabile senza dichiararla ).
Tutte le variabili dichiarate prima del main vengono chiamate variabili globali, perché possono essere usate da tutte le funzioni.
Le variabili locali invece possono essere viste solo dalla funzione che le dichiara (è sempre consigliato usare le variabili locali,questo perché le variabili globali possono essere modificate da tutte le funzioni e quindi si possono avere dei malfunzionamenti nel programma).
Quando creiamo una variabile globale in genere è statica cioè viene instanziata in memoria all'avvio del programma e distrutte alle fine del programma.
Mentre le variabili locali sono in genere automatiche cioè vengono instanziate in memoria quando una funzione viene invocata e distrutte quando la funzione termina.
E' possibile però specificare se una variabile è statica o automatica grazie alle keyword ( parole chiavi del c ) static e auto :
- Codice:
-
auto int x = 20; // specifico che la variabile è automatica
int main() {
static float pi = 3.14; // specifico che la variabile è statica
}
Possiamo dichiarare una variabile anche come costante cioè che possono venire lette ma non modificate.
Le possiamo dichiarare sia con l'istruzione #define (è un istruzione al preprocessore ,cioè quando il compilatore trova un #define legge il valore assegnato alla costante e ne sostituisce il valore in real-time):
- Codice:
-
#define PI 3.14 // definisco la variabile PI come costante che vale 3.14
oppure con la keyword const :
- Codice:
-
const float pi=3.14;
In genere si preferisce usare la keyword const per creare una costante in modo pulito e veloce.
Le variabili vengono allocate nella memoria ram,ma possono essere allocate anche in un registro del processore attraverso la keyword registe:
- Codice:
-
register int a = 65;
E' molto utile salvare una variabile nel registro del processore quando si deve accedere spesso ad essa,in quanto l'accesso a una variabile salvata nel registro del processore è più veloce rispetto all'accesso a una variabile salvata nella memoria ram.
In fine una variabile dichiarata come volatile può essere modificata da altri processi o da altre parti del programma in qualsiasi momento:
- Codice:
-
volatile int vol_var;
*questo articolo è presente anche su
[Devi essere iscritto e connesso per vedere questo link] e su
[Devi essere iscritto e connesso per vedere questo link]