6. Ukazovatele a funkcie

6.4 Precvičme si

Porovnajte uvedené funkcie. Čo bude výsledkom volania jednotlivých funkcií pre zodpovedajúce skutočné parametre?

a)b)
void vymena(int a, int b)
{
	int pom = a;
	a = b;
	b = pom;
}
void vymena(int *p_a, int *p_b)
{
	int pom = *p_a;
	*p_a = *p_b;
	*p_b = pom;
}
c)
void vymena(int **pp_a, **pp_a)
{
	int *pom = *pp_a;
	*pp_b = *pp_a;
	*pp_a = *pp_b;
}
[Riešenie]

problem.gifVytvorte program, ktorý pomocou funkcie číta riadok z klávesnice a spočíta koľko v ňom bolo medzier a koľko malých písmen. Okrem toho funkcia vráti hodnotu 0, ak bol riadok prázdny, inak vráti hodnotu 1. O každom neprázdnom riadku vypíšte požadované informácie na obrazovku. Program skončí, ak bol posledný riadok prázdny.


[Riešenie]

Napíšte niekoľko funkcií typu void: ahoj, cau, nazdar a pod., pričom každá z nich vypíše príslušný pozdrav na obrazovku. V programe deklarujte pole pointerov na funkcie vracajúce void napr. takto:
 
void (*pozdravy[2])();
 
Alebo najskôr definujte nový typ – pointer na funkciu vracajúcu void:
 
typedef void (*TPf)();
TPf pozdravy[2];.
 
Inicializujte toto trojprvkové pole adresami spomínaných funkcií. Program pozdraví používateľa podľa toho, aký zvyšok po delení tromi dá číslo zadané na vstupe. Nepoužívajte prepínač (switch), využite pole pointerov na funkcie!

[Riešenie]