Kumashiro to nie jest kwestia tego, że nie chce mi się czytać książki. Po prostu nie potrafię ogarnąć tego zdania. Jak funkcja main() ma przekazać pobraną wartość (jako argument) do mojej funkcji?
Zadanie domowe #1:
Przeanalizuj poniższy kod. Co się dzieje? Dlaczego po wywołaniu pierwszej funkcji zmienna value
w main się nie zmieniła, a po wywołaniu drugiej funkcji już ma inną wartość?
#include <stdio.h>
float by_value(float v)
{
return v + 1.0;
}
void by_ptr(float *v)
{
*v += 1.0;
}
int main(void)
{
float value, tmp;
/* Nadajemy wartości początkowe */
value = 10.0;
tmp = 0.0;
printf("1. value = %.1f; tmp = %.1f\n", value, tmp);
/* Przekazanie przez wartość */
tmp = by_value(value);
printf("2. value = %.1f; tmp = %.1f\n", value, tmp);
/* Przekazanie przez wskaźnik; zwróć uwagę, że operujemy tylko na `value' */
by_ptr(&value);
printf("3. value = %.1f; tmp = %.1f\n", value, tmp);
return 0;
}
Zadanie domowe #2:
Przeczytaj rozdział dotyczący funkcji w książce, lub zmień książkę (polecam "Język ANSI C" Kernighana i Ritchie).