6. Ukazovatele a funkcie

6.1 Parametre volané hodnotou

V jazyku C sú všetky parametre funkcie odovzdávané hodnotou. Pri každom volaní si príslušná funkcia v zásobníku vytvorí lokálne premenné, ktoré sa inicializujú hodnotami skutočných parametrov. Ak sa aj hodnoty týchto „súkromných“ premenných vo funkcii zmenia (pracujeme s nimi totiž rovnako ako s ostatnými vo funkcii deklarovanými lokálnymi premennými), hodnoty premenných, ktoré vo volaní funkcie vystupovali ako skutočné parametre sa nezmenia! Funkcii sa totiž odovzdávajú len kópie hodnôt skutočných parametrov. Do funkcie teda takto iba „dovezieme“ potrebné vstupné hodnoty. Príklad:

void nastav(int x)
{
	x = 0;
	printf("x ma hodnotu %d\n", x);
}

int main(void)
{
	int x = 1;

	printf("x ma hodnotu %d\n", x);
	nastav(x);
	printf("x ma hodnotu %d\n", x);
	return (0);
}

Po spustení tohto programu vidíme na výstupe nasledovné výsledky:
 
pred volaním funkcie nastav sa vypíše:
x má hodnotu 1
 
vo funkcii nastav:
x má hodnotu 0
 
po skončení funkcie nastav:
x má hodnotu 1