Show Menu
Cheatography

C Language Cheat Sheet (DRAFT) by

This sheet illustrates the basic of the C Language for beginners.

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Puntatori

int *pointer;
Dichiara un puntatore a un intero.
char *pointer;
Dichiara un puntatore a un char.
int *const pointer;
Dichiara un puntatore costante. Il contenuto a cui punta può essere modifi­cato.
int const* pointer;
 || 
const int* pointer;
Dichiara un puntatore variabile. Il contenuto a cui punta non può essere modifi­cato.
const int* const pointer;
Dichiara un puntatore costante a variabile costante. Il contenuto a cui punta non può essere modifi­cato.
pointer = &v­ari­abile;
Assegna al puntatore l'indi­rizzo della variabile.
Il puntatore è un valore che indica l'indi­rizzo del dato a cui punta, non il suo contenuto.

Passare Array e Matrici alle Funzioni

Array
void nomeFu­nzione (int []);
Array
void nomeFu­nzione (int array[]);
Matrice a 2 dimensioni
void nomeFu­nzione (int matric­e[]­[DI­M2]);
Matrice a 3 dimensioni
void nomeFu­nzione (int matric­e[]­[DI­M2]­[DI­M3]);
VLA
void nomeFu­nzione (int array[*], int size);
VLA a 2 dimensioni
void nomeFu­nzione (int array[­][*], int size, int size2);
VLA a 3 dimensioni
void nomeFu­nzione (int array[­][*­][*], int size, int size2, int size3);
1 e 2 sono equiva­lenti.
Non è necessario passare il nome di un array monodi­men­sio­nale.
Non è necessario passare il nome delle dimens­ioni, basta specif­icare il tipo.

File

FILE *filep­ointer;
Definisce il puntatore al file.
filepo­inter = fopen(­"­fil­e.t­xt", "­w");
Inizia­lizza il puntatore per aprire il file e ne definisce la modalità di apertura.
fclose­(fi­lep­oin­ter);
Chiude lo stream del file.
fprint­f(f­ile­poi­nter, "­tes­to", variab­ili…);
Stampa nel file il testo e il contenuto delle variabili.
fscanf­(fi­lep­ointer, "­%fo­rma­to", &v­ari­abi­li…);
Riceve dal file l'input deside­rato.
fwrite­(or­igine, dimens­ion­eIn­Byte, numEle­menti, filepo­inter);
Scrive sul file le inform­azioni presenti nell'o­rigine.
fread(­des­tin­azione, dimens­ion­eIn­Byte, numEle­menti, filepo­inter);
Legge e scrive in destin­azione le inform­azioni presenti nel file.
fwrite e fread restit­uiscono il valore intero di quanti elementi sono stati scritt­i/l­etti.

Formato dati

Data Type
Printf
Scanf
int
%d
%d
unsigned int
%u
%u
long int
%ld
%ld
unsigned long int
%lu
%lu
long long int
%lld
%lld
unsigned long long int
%llu
%llu
double
%f
%lf
float
%f
%f
hex integer
%x
%x
decimal exponent
%e
%e
char
%c
%c
unsigned char
%c
%c
string
%s
%s
%pointer
%p
%p

Sequenze di Escape

Escape
Azione
\n
Va a capo.
\t
Va alla tabula­zione succes­siva.
\a
Produce suono o allarme visibile senza cambiare posizione del cursore.
\\
Scrive un backlash.
\"
Scrive le doppie virgol­ette.
\?
Scrive il punto interr­oga­tivo.
\'
Scrive un'apo­strofo.

Operatori Logici

Operatore
Simbolo
AND
&&
OR
||
NOT
!
NOT è unario
EX: !a

Definire Array e Matrici

int i[10];
Definisce un array di interi di grandezza 10.
int i[10] = {0};
Definisce un array di interi di grandezza 10 e inizia­lizza tutte le celle a 0.
char i[10];
Definisce un array di char di grandezza 10: può contenere al massimo 9 caratteri.
char i[] = "­cia­o";
Definisce un array di char di grandezza 5: 4 lettere e il termin­atore di stringa '\0'.
char i[] = {'c', 'i', 'a', 'o', '\0'};
Equiva­lente al preced­ente.
int i[2][3];
Definisce una matrice 2*3.
int i[2][3] = {{1, 2, 3},
{4, 5, 6},};
Definisce una matrice 2*3 e inizia­lizza ogni riga con valori da 1 a 6.
int i[variabile];
Definisce un array delle dimensioni conservate in variabile. Caso di VLA.
int i[SIZE];
Definisce un array di dimensioni pari alla costante simbolica SIZE.
Un vettore preceduto da const non può essere modificato nel suo contenuto.

Definire una Struttura

struct dati
{
      int sensore;
      char stringa[10];
      float media;
};
Una struttura include variabili e array anche di tipi diversi.
Se la struttura è usata da più funzioni, porre la struttura fuori dal corpo della main.
 

Tipi di Variabili

Type
Scope
Extern
Prefisso che indica una variabile dichiarata in un modulo (es .h) esterno al modulo chela usa.
Global
Dichiarata estern­amente alle funzioni e visibile in ogni funzione
Static
Come locale ma non è distrutta quando la funzione cede il controllo al chiamante
Local
Ha una visibilità limitata ad una funzione o una iterazione (for).
SI
#include "myfile.h"
extern int var;
int main(void)
{
var = 10; return 0;
}
NO
extern int var; 
int main(void)
{
var = 10;
return 0;
}
Con extern dichiarare dove si trova la variabile.
EX: myfile.h

Incremento e Decremento

Formato
Azione
a++
Rende dispon­ibile la variabile, poi la incrementa
++a
Incrementa la variabile, poi la rende dispon­ibile
a--
Rende dispon­ibile la variabile, poi la decrementa
--a
Decrementa la variabile, poi la rende dispon­ibile
a +=
Somma ad a la parte destra, poi assegna ad a
a -=
Sottrae ad a la parte destra, poi assegna ad a
a *=
Moltiplica a per a la parte destra, poi assegna ad a
a /=
Divide a per a la parte destra, poi assegna ad a
a %=
Trova il resto tra a e la parte destra, poi assegna ad a

Manipo­lazione su bit

Simbolo
Azione
x>>y
x scorre a destra di y bit
x<<y
x scorre a sinistra di y bit
x&y
AND bit a bit tra x e y
x|y
OR bit a bit tra x e y
x^y
XOR bit a bit tra x e y
~x
Comple­mento dei bit di x
~ è un operatore unario.

Operatore Ternario

(condizione) ? Espressione 1 : Espressione 2 ;
Se la condizione è vera verrà eseguita Espres­sione 1;
Se la condizione è falsa verrà eseguita Espres­sione 2.

Generare Numeri Random

Genera numeri casuali
i = rand();
Genera numeri casuali in un intervallo preciso
i = minimo + rand() % (massimo - minimo + 1);
Scegliere un seme sempre diverso
srand(­tim­e(N­ULL));
Per utilizzare rand() e srand() è necessario includere <st­dli­b.h­>.
Per utilizzare time(NULL) è necessario includere <ti­me.h­>.

Modalità Apertura File

r
Lettura
Se il file non esiste, fopen() restit­uisce NULL.
r+
Lettura e Scrittura
Se il file non esiste, fopen() restit­uisce NULL.
w
Scrittura
Se il file non esiste viene creato, se esiste viene sovras­critto.
w+
Lettura e Scrittura
Se il file non esiste viene creato, se esiste viene sovras­critto.
a
Append
Se il file non esiste viene creato.
a+
Lettura e Append
Se il file non esiste viene creato.
rb
Lettura binaria
Se il file non esiste, fopen() restit­uisce NULL.
rb+
Lettura e Scrittura binaria
Se il file non esiste, fopen() restit­uisce NULL.
wb
Scrittura binaria
Se il file non esiste viene creato, se esiste viene sovras­critto.
wb+
Lettura e Scrittura binaria
Se il file non esiste viene creato, se esiste viene sovras­critto.
ab
Append binario
Se il file non esiste viene creato.
ab+
Lettura e Append
Se il file non esiste viene creato.

Operazioni sui Puntatori

Operazione
Azione
pointer + i
Sposta il puntatore di i posizioni in avanti.
pointer - i
Sposta il puntatore di i posizioni indietro.
pointer1 - pointer2
Quanti dati del tipo puntato possono inserire tra la posizione di pointer1 e pointer2.
pointer++
Sposta di una posizione il puntatore.
Spostare significa aumentare o diminuire di tot. byte (in base alla dimensione del tipo puntato) l'indi­rizzo del puntatore.
'i' è un valore intero.

Precedenze

Operatore
Descri­zione
Associ­atività
()
[]
++ --
Parent­esi­/Ch­iamata a funzione
Parentesi/Indice Array
Postincremento/Postdecremento
Sinistra - Destra
++ --
(type)
*
&
sizeof
Preincrementi/Predecrementi
Cast
Indirezione puntatore/Deferenziazione
Indirizzo puntatore
Operatore sizeof
Destra - Sinistra
* / %
Moltip­lic­azione, Divisione e Modulo
Sinistra - Destra
+ -
Somma e sottra­zione
Sinistra - Destra
<< >>
Shift bit a bit
Sinistra - Destra
< <= > >=
Confronto relazioni
Sinistra - Destra
== !=
Confronto uguagl­ianza
Sinistra - Destra
&&
AND Logico
Sinistra - Destra
||
OR Logico
Sinistra - Destra
? :
Operatore ternario
Destra - Sinistra
=
+= -=
*= /= %=
Assegnazione
Operazione e assegn­azione
Destra - Sinistra
,
Operatore virgola
Sinistra - Destra

Pulire Schermo

#include <wi­ndo­ws.h­> ||
#include <pr­oce­ss.h­> ||
#include <st­dli­b.h>
Inserire la libreria necessaria al funzio­nam­ento.
system­("pa­use­");
Chiede all'utente di premere un tasto per contin­uare.
system­("cl­s"); //windows
 || 
system­("cl­ear­"); //linux
Pulisce lo schermo dal testo preced­ente.