Piccolo Cheat Sheet per il C – parte 1

Questa serie di post vuole essere un piccolo Cheat Sheet per il linguaggio C. Lo scrivo prima di tutto per me, visto che non programmo in C da molto tempo e rischio di dimenticarmi qualche cosa, ma magari può tornare utile anche a qualcun’altro.

Lo scopo di questo post non è ricapitolare tutte le caratteristiche o le strutture del C, ma di annotare alcune caratteristiche che altrimenti rischierei di dimenticare.

  • Tipi di dati

char, int, float, double, void

  • Modificatori dei tipi

signed, unsigned (solo char e int), short (solo int), long (int e double)

  • Modificatori di accesso

const (valore solo in inizializzazione) utile nelle funzioni con parametri puntatori, per impedire modifiche all’oggetto puntato dal parametro, volatile la variabile può essere modificata esternamente al programma

  • Specificatori di classe di memorizzazione

extern per accedere a variabili globali definite in altri file, static variabili "permanenti" all’interno di una funzione o di un file (nel secondo caso la variabil pur essendo globale sarà nota solo all’interno del file), register chiede al compilatore di trattare "con riguardo" la variabile, ad esempio mantenendola in un registro (se possibile aumenta le prestazioni)

  • Letterali

123 = int, 123L = long int, 123 = short int, 123U = unsigned int, 123.0F = float, 123.0 = double, 123.0L = long double, 0x123 = int esadecimale, 0123 = int ottale, '1' = char, "123" = char*

  • Costanti speciali (escape)

\b (backspace), \f (form feed), \t (tabulazione orizzontale), \v (tabulazione verticale), (carattere nullo), \a (bip), \? (punto interrogativo), \N (costante ottale), \xN (costante esadecimale)

  • Operatori bit a bit

& (and), | (or), ^ (xor), ~ (complemento a 1), >> (scorrimento a destra), << (scorrimento a sinistra), negli scorrimenti i bit da aggiungere all’estremità opposta allo scorrimento sono sempre 0, nel caso di numero negativo si mette un 1 all’ultimo bit

  • Operatori per puntatori

& (l’indirizzo di var) * (valore all’indirizzo di val)

  • sizeof

sizeof var (o (var)), sizeof (int)

  • Operatore ,

esegue tutte le operazioni da sinistra a destra, e restituisce il valore dell’ultima operazione (quella più a destra)

  • Operatore . e ->

. per accesso a elementi di strutture, -> per accesso a elementi di strutture tramite puntatori

  • Ordine di valutazione delle espressioni

L’ordine di valutazione è deciso dal compilatore, non c’è un ordine fisso

  • Vero e Falso

==0 = falso, !=0 =vero (anche <0)

  • dichiarazione di variabili in cicli e selezioni (if, switch)

non si può

  • dichiarazione di variabili

solo all’inizio di un blocco

  • dichiarazione e definizione

dichiarazione = no allocazione (ad esempio con extern), definizione = dichiarazione + allocazione (caso standard)

  • array

funzione con array multidimensionale come parametro tipo func(tipo a[][N][M][O]), occorre specificare la lunghezza delle dimensioni (dalla seconda in poi) perchè il compilatore deve sapere di quanto spostarsi ad ogni accesso.

int *p, a[10];

p = a;

*(p+5) = a[5]; //=p[5]

a = &a[0];

  • Inizializzazione array

int i[] = {1, 2, 3, 4};

char str[] = "string";

int d[][2] = { 1,1, 2,2, 3,3 4,4};

int d[][2] = { {1,1}, {2,2}, {3,3}, {4,4}};

Una risposta a Piccolo Cheat Sheet per il C – parte 1

  1. Pingback: Piccolo Cheat Sheet per il C – parte 2 « DoppiaVu’s Blog

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s