Secondo un libro che ho letto puoi passare variabili da una funzione all'altra passando per valore / indirizzo. Quando passi per indirizzo, non conserverà più la variabile se è stata modificata in una funzione e restituita alla funzione originale (es: main()
). Il capitolo successivo, il libro recensisce "valori di ritorno". In questo capitolo spiega l'uso di return(variable);
ma non spiega uno scopo chiaro. return(variable);
è utilizzato quando più variabili vengono passate a una determinata funzione per restituirne solo una? O ci sono altri usi? In altre parole, qual è la differenza tra return;
e return(variable);
?
Passando per indirizzo, esatto esempio di libro senza return(num);
:
#include <stdio.h>
main()
{
int i;
i = 4
printf("Before: %d.\n", i);
half(&i);
printf("After: &d.\n", i);
return (0);
}
half (int *i)
{
*i = *i / 2;
printf("During: %d.\n", *i);
return;
}
Valori di ritorno, esatto esempio di libro con return(num);
:
#include <stdio.h>
float gradeAve(float test1, float test2, float test3);
main()
{
float grade1, grade2, grade3;
float average;
printf("What was the grade on the first test? ");
scanf(" %f", &grade1);
printf("What was the grade on the second test? ");
scanf(" %f", &grade2);
printf("What was the grade on the third test? ");
scanf(" %f", &grade3);
average = gradeAve(grade1, grade2, grade3);
printf("\nWith those three test scores, the average is %.2f", average);
return 0;
}
float gradeAve(float test1, float test2, float test3)
{
float localAverage;
localAverage = (test1+test2+test3)/3;
return (localAverage);
}
In che modo entrambi questi valori possono tornare alla funzione originale con o senza return(num);
?