C/Blocchi e funzioni/main
Wikibooks, manuali e libri di testo liberi.
La funzione main è la funzione che viene eseguita all'inizio del programma. Essa può avere degli argomenti e può restituire un valore.
Nessun'altra funzione nel programma deve avere il nome main.
[modifica] Restituzione di un valore
Per convenzione si è soliti far ritornare alla funzione main il valore 0 se l'esecuzione si è svolta in modo corretto ed un valore diverso da zero per rappresentare un codice di errore in caso di esecuzione fallita.
Per esempio:
#include <stdio.h> #include <stdlib.h> int main(void) { int a=rand(); if (a>10) return 1; //Errore! return 0; }
Questo semplice programma restituirà 1 se il numero casuale a è maggiore di 10, 0 se è minore o uguale a 10. È possibile anche usare la funzione exit(int valore) per restituire un valore:
#include <stdio.h> #include <stdlib.h> int main(void) { int a=rand(); if (a>10) exit(1); //Errore! exit(0); }
[modifica] Passaggio di parametri
La funzione main può non avere alcun argomento (int main(void)), oppure può avere come argomenti due variabili: argc, un intero e argv, un array di stringhe C concluse dal carattere nullo. Il primo indica il numero di argomenti passati a main (incluso il nome del programma), il secondo contiene tutti gli argomenti sotto forma di stringhe (il nome del programma corrisponde ad argv[0]). Talvolta viene anche incluso un terzo argomento envp con la stessa sintassi di argv. Questo array contiene le variabili di ambiente.
Il passaggio di parametri ad un programma avviene tramite la sua invocazione da linea di comando. Infatti è sufficiente far seguire al nome del programma i valori da passare, separati da uno spazio. Gli argomenti vengono trattati come stringhe, in particolare, alla prima posizione del vettore argv sarà presente una stringa che contiene il nome del programma eseguito. Nel caso in cui sia necessario passare al programma parametri di altri tipi base sarà necessario effettuare una conversione.
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { printf("A questo programma sono stati passati %d argomenti.\n", argc-1); int i; for (i=1; i<argc; i++) { printf("Il %d° parametro è %s.\n", i, argv[i]); } system("pause"); return 0; }
Se questo programma si chiama pippo, il comando pippo buongiorno ciao restituirà:
A questo programma sono stati passati 2 argomenti. Il 1° parametro è buongiorno. Il 2° parametro è ciao.

