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}};

Un pensiero su “Piccolo Cheat Sheet per il C – parte 1”

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...