caricato da sararegistrazioni123

Programmazione C: Funzioni, Procedure e Passaggio Parametri

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