Il linguaggio C è un linguaggio di programmazione procedurale e imperativo di uso generale, sviluppato da Dennis Ritchie presso gli AT&T Bell Laboratories all'inizio degli anni '70.
Rappresenta una vera e propria pietra miliare nella storia dell'informatica. Nato per unire l'efficienza tipica del linguaggio assembly alla portabilità e leggibilità dei linguaggi di alto livello, il C è stato fondamentale per la scrittura del sistema operativo UNIX ed è tuttora la base di molti linguaggi moderni come C++, C#, Java e Python.
Ideatore
Sviluppato da Dennis Ritchie nei laboratori AT&T Bell Labs.
Paradigma
Procedurale / Imperativo basato sulla suddivisione in funzioni.
Esecuzione
Compilato (richiede un compilatore come GCC, Clang o MSVC).
Ambito d'Uso
Sistemi operativi, driver, kernel, sistemi embedded e software ad alte prestazioni.
Il linguaggio C si distingue per alcune peculiarità tecniche che lo rendono ancora oggi insostituibile:
Efficienza ed Esecuzione
Traduzione diretta in codice macchina per un'esecuzione estremamente veloce e con minimo consumo di memoria.
Gestione Memoria
Controllo di basso livello sull'hardware tramite l'uso dei puntatori e l'allocazione dinamica della memoria.
Portabilità e Struttura
Codice facilmente ricompilabile su architetture diverse e organizzazione in moduli trasparenti grazie alle funzioni.
Accedi alla documentazione e alle risorse di supporto per iniziare a programmare in linguaggio C:
Guida C Reference
Manuale di riferimento completo con la libreria standard e le funzioni C.
Leggi la GuidaCompilatore Online
Scrivi ed esegui subito codice C direttamente dal browser senza installare nulla.
Provalo OnlineCompilatore GCC
Sito ufficiale del compilatore standard open source della Free Software Foundation.
Sito GCCQuadri di sintesi e definizioni chiave per comprendere la struttura, la gestione della memoria ed i concetti fondamentali del Linguaggio C:
Mappa Concettuale: Linguaggio C
LINGUAGGIO C │ ├── 1. STRUTTURA & SINTASSI (Anatomia di un programma) │ └── Definizione: La composizione di base di un file di codice sorgente .c. │ ├── Direttive al Preprocessore ──> Inclusione di librerie (#include) e macro (#define) │ ├── Funzione main() ──────────> Punto di ingresso obbligatorio per l'esecuzione del programma │ └── Librerie Standard ────────> Intestazioni essenziali come stdio.h, stdlib.h e math.h │ ├── 2. TIPI DATI & STRUTTURE (Organizzazione dei dati) │ └── Definizione: Come il C definisce e raggruppa le informazioni in memoria. │ ├── Tipi Primitivi ──────────> int, char, float, double e modificatori (short, long, unsigned) │ ├── Array e Stringhe ────────> Sequenze contigue in memoria e array di char terminati da '\0' │ └── Strutture (struct) ──────> Tipi di dato personalizzati che raggruppano variabili eterogenee │ ├── 3. GESTIONE DELLA MEMORIA (Controllo di basso livello) │ └── Definizione: Accesso diretto e allocazione dinamica della RAM. │ ├── Puntatori (*) ───────────> Variabili che memorizzano l'indirizzo di memoria di altre variabili │ ├── Operatore Indirizzo (&) ──> Restituisce l'indirizzo fisico di memoria di una risorsa │ └── Allocazione Dinamica ───> Gestione manuale dell'Heap tramite malloc(), calloc() e free() │ └── 4. COMPILAZIONE & I/O (Flusso da sorgente a eseguibile) └── Definizione: Trasformazione del codice ed interazione con file ed utente. ├── Fasi di Compilazione ──> Preprocessing -> Compilazione -> Assemblaggio -> Linking ├── Input / Output (I/O) ──> Lettura e scrittura da console tramite printf() e scanf() └── Gestione File ─────────> Manipolazione di file su disco tramite puntatori FILE* (fopen, fclose)
Glossario dei Termini (IT / EN)
| Termine Italiano | Termine Inglese | Definizione Sintetica |
|---|---|---|
| Puntatore | Pointer | Variabile speciale contenente l'indirizzo di memoria RAM in cui è memorizzato un altro dato. |
| Preprocessore | Preprocessor | Componente della toolchain che analizza il codice prima della compilazione, risolvendo le direttive che iniziano con #. |
| Allocazione Dinamica | Dynamic Memory Allocation | Richiesta di allocare o liberare memoria nello spazio Heap durante l'esecuzione del programma (es. malloc/free). |
| Passaggio per Riferimento | Pass by Reference / Pointer | Tecnica che consiste nel passare ad una funzione l'indirizzo di memoria di una variabile, consentendone la modifica diretta. |
| Struttura Dati Personalizzata | Structure (struct) | Tipo di dato definito dall'utente che raggruppa variabili di tipo diverso sotto un unico nome. |
| Carattere Termintore Nullo | Null Terminator ('\0') | Carattere speciale con valore ASCII zero usato in C per marcare la fine di una stringa di testo in memoria. |
| File di Intestazione | Header File (.h) | File contenente le dichiarazioni di funzioni, macro e costanti condivisibili tra più file sorgente (.c). |