OldWildWeb Logo

Funzione main - Guida C

La funzione main del linguaggio C


La funzione Main del C

La funzione main nel C, viene invocata non appena il programma viene eseguito dal sistema operativo (o da un altro dispositivo come ad esempio un microcontrollore), le istruzioni verranno eseguite in ordine sequenziale partendo dall'inizio del codice dentro le parentesi graffe della funzione.

La funzione main è quindi una funzione standard che non fa altro che indicare l'inizio di un programma, può accettare dei parametri in formato stringa che sono utilissimi per dare al programma un set di indicazioni su cosa deve eseguire e può anche restituire un numero intero per terminare l'esecuzione del programma.

Dichiarare la funzione main nel C è molto semplice, vediamo qui sotto un esempio di una funzione main di base senza nessun parametro.
//main.c
void main(void)
{
// CODICE DEL C
}

la dicitura void indica che la funzione qui sopra non restituisce nessun valore so che questo potrebbe confondervi ma non preoccupatevi nelle successive lezioni capirete cosa si intende, all'interno delle parentesi tonde vi è di nuovo la dicitura void per indicare che la funzione non accetta alcun parametro.

La funzione main può restituire un numero intero al sistema operativo per invocare la fine del programma, vediamo come

//main.c
int main(void)
{
// CODICE DEL C
return 0;// il programma qui termina

// le istruzioni dopo il return non verranno mai eseguite
}


La funzione main qui sopra restituisce un numero intero, abbiamo specificato il parametro int prima di dichiarare la funzione main, il codice return 0; restituisce al sistema operativo il numero 0, una volta invocato il return il programma viene terminato tutte le istruzioni successive al return 0 verranno ignorate.

//main.c
int main(int argc, char *argv[])
{
// CODICE DEL C
return 0; // il programma qui termina
}


In questo esempio abbiamo aggiunto i parametri al programma, esaminiamo cosa significano i parametri
int argc, char *argv[]


Il programma main troverà nel suo interno la variabile di tipo numerica argc è un acronimo che sta per argument count ovvero conta il numero di parametri argv presenti nel programma.

Il primo argomento presente in argv è sempre il nome del programma stesso, i successivi possono essere passati al programma per indicare quali operazioni esso deve eseguire.

So che potreste essere confusi guardate il successivo esempio:
Supponiamo di eseguire da console il seguente programma main in questo modo:
$ ./main parametro1 parametro2
Il programma in questione è realizzato in questa maniera:
//main.c
int main(int argc, char *argv[])
{
printf("Numero argomenti: %d\n", argc);
//OUTPUT-> Numero argomenti: 3
printf("Argomento 1: %s\n", argv[0]);
//OUTPUT-> Argomento 1: ./main
printf("Argomento 2: %s\n", argv[1]);
//OUTPUT-> Argomento 2: parametro1
printf("Argomento 3: %s\n", argv[2]);
//OUTPUT-> Argomento 3: parametro2
// CODICE DEL C
return 0; // il programma qui termina
}
Come potrete notare il programma stamperà come numero di argomenti argc 3, abbiamo eseguito il programma passandogli 2 argomenti con la shell linux il primo argomento è il nome del programma o più precisamente il comando per eseguirlo i successivi due sono le nostre stringhe parametro1 e parametro2 che potrebbero essere utilizzate dal codice per eseguire delle determinate operazioni a nostro piacimento.

*argv[] è un array di stringhe che contiene i parametri da noi specificati, il parametro 0 è sempre il nome del programma.

L'uso dei parametri è molto importante nelle applicazioni da console, aprendo un programma con determinati parametri ad esempio può essere utile per dire al programma cosa deve fare esattamente.

In linux per comprimere un file con il comando tar potremmo utilizzare questo set di istruzioni da console.

$ tar cvjf nome-archivio.tar.bz2 nome_file_da_comprimere.txt
In questo comando da console tar (argv[0]) è il nome del programma cvjf (argv[1]) è il primo parametro da noi digitato serve per dire al programma tar che intendiamo creare un archivio di tipo tar.bz2 nome-archivio.tar.bz2 (argv[2]) è il secondo parametro indica a tar il nome con cui salvare l'archivio mentre l'ultimo parametro è il nome del file da comprimere nel nostro caso nome_file_da_comprimere.txt (argv[3]), avremmo potuto continuare a specificare parametri per fornire a tar una lista di files da comprimere.

Come potrete capire dall'esempio qui sopra i parametri passati alla funzione main sono utilissimi per dire al programma cosa deve fare esattamente, tali parametri andranno implementati nel codice impareremo nelle prossime lezioni come fare.

La scelta di passare i parametri alla funzione main rende possibile sfruttare i programmi da console per essere lanciati in maniera automatica ad esempio dalle operazioni pianificate di windows o dal crontab di linux tutto ciò che bisognerà fare sarà specificare insieme al programma anche i relativi parametri, in alternativa sarebbe possibile chiedere all'utente di digitare durante l'esecuzione del programma dei comandi in maniera manuale ma questo risulterebbe meno pratico e non adatto a comandi da lanciare in maniera automatica.

Torna all'indice - Guida C



I parametri della funzione main nel C

Articoli correlati