Menu
Coddy logo textTech

C Cheat Sheet

Ultimo aggiornamento

Hello World e struttura del programma

Ogni programma C parte da main e restituisce un int.

ElementoCodice
Includere un header#include <stdio.h>
Punto di ingressoint main(void) { ... }
Con argomenti da riga di comandoint main(int argc, char *argv[]) { ... }
Stampare una rigaprintf("Hello, World!\n");
Restituire successoreturn 0;
Commento su una riga// comment
Commento a blocco/* comment */

Tipi di dati

Le dimensioni dipendono dalla piattaforma; i minimi qui sotto sono garantiti dallo standard.

TipoDescrizione
intIntero, almeno 16 bit (di solito 32)
unsigned intIntero non negativo
long / long longInteri più ampi (almeno 32 / 64 bit)
float / doubleVirgola mobile a precisione singola / doppia
charUn singolo byte, usato anche per i caratteri
_Bool (bool tramite <stdbool.h>)true o false
size_tTipo senza segno per dimensioni e indici
voidNessun tipo: usato per funzioni e puntatori generici

Specificatori di formato di printf e scanf

Segnaposto che corrispondono al tipo di ciascun argomento.

SpecificatoreCorrisponde a
%d / %iint con segno
%uint senza segno
%ld / %lldlong / long long
%fdouble (e float in printf)
%.2fdouble con 2 cifre decimali
%cUn singolo char
%sStringa (char *)
%pIndirizzo di un puntatore
%xint senza segno in esadecimale
%zusize_t

Operatori

OperatoreSignificato
+ - * / %Aritmetici (% è il resto intero)
== !=Uguale / diverso
< > <= >=Confronto
&& || !And / or / not logici
& | ^ ~ << >>And, or, xor, not bit a bit e shift
++ --Incremento / decremento
+= -= *= /=Assegnazione composta
cond ? a : bCondizionale ternario
sizeof(x)Dimensione in byte di un tipo o di una variabile

Controllo del flusso

IstruzioneSintassi
If / elseif (x > 0) { ... } else { ... }
Else ifelse if (x == 0) { ... }
Switchswitch (n) { case 1: ...; break; default: ...; }
Ciclo whilewhile (i < n) { ... }
Ciclo do-whiledo { ... } while (i < n);
Ciclo forfor (int i = 0; i < n; i++) { ... }
Break / continuebreak; esce da un ciclo, continue; passa all'iterazione successiva
Goto (raro)goto label; ... label:

Funzioni

Dichiarale prima di usarle oppure aggiungi un prototipo in cima al file.

OperazioneSintassi
Definire una funzioneint add(int a, int b) { return a + b; }
Prototipo (dichiarazione)int add(int a, int b);
Nessun valore di ritornovoid greet(void) { ... }
Nessun parametroint rand_seed(void) { ... }
Passaggio per puntatore (per modificare)void inc(int *p) { (*p)++; }
Passare un arrayint sum(int arr[], int n) { ... }
Static (locale al file)static int helper(void) { ... }

Puntatori e memoria

Un puntatore contiene un indirizzo. La memoria dell'heap va liberata a mano.

OperazioneSintassi
Dichiarare un puntatoreint *p;
Indirizzo dip = &x;
Dereferenziare (lettura/scrittura)int y = *p; / *p = 10;
Puntatore nulloint *p = NULL;
Allocare sull'heapint *a = malloc(n * sizeof(int));
Allocare e azzerareint *a = calloc(n, sizeof(int));
Ridimensionare un'allocazionea = realloc(a, newSize);
Liberare memoria dell'heapfree(a);
Aritmetica dei puntatori*(a + i) equivale a a[i]

Array e stringhe

In C le stringhe sono array di char terminati da \0.

OperazioneSintassi
Dichiarare un arrayint nums[5];
Inizializzare un arrayint nums[] = {1, 2, 3};
Accedere a un elementonums[0] = 10;
Lunghezza dell'array (array sullo stack)sizeof(nums) / sizeof(nums[0])
Letterale stringachar s[] = "hello";
Lunghezza di una stringastrlen(s) (escluso \0)
Copiare una stringastrcpy(dst, src);
Confrontare stringhestrcmp(a, b) == 0 significa uguali
Concatenare stringhestrcat(dst, src);

Struct e libreria standard più usata

OperazioneSintassi
Definire una structstruct Point { int x; int y; };
Dichiarare e accederestruct Point p; p.x = 1;
Accesso tramite puntatorep->x = 1; (come (*p).x)
Alias di tipotypedef struct Point Point;
Leggere l'inputscanf("%d", &n);
Convertire una stringa in intint n = atoi("42");
Valore assoluto / potenzaabs(x) (int), pow(x, y) da <math.h>
Ordinare un arrayqsort(arr, n, sizeof(int), cmp);

La sintassi, gli specificatori di formato e gli schemi con i puntatori di C che usi di più, in una sola pagina. Questa cheat sheet di C è un riferimento rapido per scrivere in C: tipi di dati, specificatori di printf/scanf, operatori, controllo del flusso e le operazioni su puntatori e memoria che mettono in difficoltà.

Tutto quello che trovi qui è C standard (C99/C11) e si compila con gcc o clang. Copia quello che ti serve oppure prova qualsiasi frammento dal vivo nel playground C, senza installare nessun compilatore. Stai imparando il C? Il corso interattivo gratuito di C di Coddy ti fa mettere le mani su puntatori, memoria e libreria standard.

Domande frequenti sulla cheat sheet di C

Questa cheat sheet di C è gratuita?
Sì. Questa cheat sheet di C è completamente gratuita e non richiede registrazione. Salvala nei preferiti e torna quando devi controllare un tipo, uno specificatore di formato o un'operazione sui puntatori.
Qual è la differenza tra stack e heap in C?
La memoria dello stack contiene le variabili locali e viene liberata automaticamente quando una funzione termina: è veloce, ma di dimensione limitata. La memoria dell'heap si alloca esplicitamente con malloc o calloc, resta in vita finché non chiami free e si usa quando ti serve memoria che sopravviva alla funzione corrente o la cui dimensione è nota solo a runtime. Dimenticare di chiamare free sulla memoria dell'heap provoca un memory leak.
Perché scanf richiede la e commerciale (&) e printf no?
scanf scrive il valore nella tua variabile, quindi le serve l'indirizzo della variabile, ed è proprio quello che le dà &x. printf legge soltanto il valore, quindi le passi il valore stesso. L'eccezione sono le stringhe: un array di char decade già in un puntatore, quindi scrivi scanf("%s", name) senza &.
Posso esercitarmi con il C online?
Sì. Apri il playground C per compilare ed eseguire nel browser qualsiasi frammento di questa cheat sheet, senza installare un compilatore. Quando vuoi un percorso strutturato, il corso interattivo gratuito di C di Coddy ti porta passo dopo passo da variabili e cicli fino a puntatori e gestione della memoria.
Questa cheat sheet va bene per chi inizia?
Sì. È organizzata dai mattoni più comuni (tipi, printf, controllo del flusso) fino a quelli avanzati (puntatori, memoria, struct), così puoi usare le prime sezioni fin dal primo giorno e arrivare al resto con il tempo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara C con Coddy

INIZIA