28 03 2022 #include<stdio.h> int main(void) TipoRitorno nome(Tipo1 nome1, Tipo2 nome2, …) { // istruzioni del corpo } () =procedura, per ora abbiamo visto solo il main void vuol dire vuoto, non restituisce niente quindi void è una procedura, che è un tipo particolare di funzione. funzione in questi casi = routine, siamo noi che dobbiamo distinguere es #include<stdio.h> double somma(double a, double b) { void saluta( void ) { saluta() stampa(somma(3.0, 4.0/2.0)); return 0; } /* void : è una procedura void: quando la si invoca non si deve passare a nessun argomento, fa la funzionalità saluta e poi termina, passa a stampa */ void stampa(double v) { // stampa è procedura es #include<stdio.h> int main(void) { printf(“hello\n”); return 1; } // scrivere return 1 è un errore, perché il programma ha void, quindi deve restituire 0 /* parametri.c */ #include <stdio.h> void inc(int x){ x = x + 1; } /* oppure int inc(int x) { x = x + 1; return x; } */ int main( void ) { int y = 0; inc(y); printf("%d\n", y); return 0; } si inizia a leggere da int main si ottiene y = 0 quando main chiama inc la macchina prende la variabile y e la mette nella x, le due variabili sono separate, se ne modifico una l’altra non cambia es /* scambio di variabili */ #include <stdio.h> // metto le variabili fuori dalle funzione, altrimenti dovrei considerare l’effetto della funzione sulle variabili fin da subito int x; int y; void swap(){ int z = x; x = y; y = z; } int main(void) { swap(x, y); printf(“x = %d, y = %d, x, y); return 0; } se ho int ….. non posso dire return x, y, ovvero una coppia di interi perché all’inizio ho solo un intero