You are on page 1of 11

Pointeri la

funcii

1.Pointeri spre
subprograme
Numele unei funcii poate fi folosit ca pointer
constant (asemntor masivelor)
Semnificaia:
adresa din memorie unde se afl codul

executabil al subprogramului respectiv

Tipul:
Pointer ctre un subprogram care primete o

anumit list de parametri i ntoarce un


anumit tip de rezultat

Utilizare:
Transmiterea subprogramelor ca parametri

pentru alte subprograme

Exemple:
void sortare(float v[], int
sortare pointer ctre
parametri un vector cu
i are rezultat de tip

n);
o funcie care primete ca
elemente float i un ntreg
void

float minim(float v[], int n, int poz[], int* nr);


minim pointer ctre o funcie care primete ca
parametri un vector cu elemente float, un ntreg,
un vector cu elemente ntregi i un pointer ctre
ntreg i are rezultat de tip float

Etape:
Declararea unei variabile de tip procedural

(pointer spre funcie)


Descrierea funciei care utilizeaz parametrii

procedurali
Apelul funciei cu parametri procedurali

Declarare variabil tip pointer


la funcie i utilizare
Exemplul 1:
void sortare(float v[], int n);
float minim(float v[], int n, int poz[], int* nr);
void main()
{ int n; float v[100];
void (*p)(float v[], int n);
float (*q)(float v[], int n, int poz[], int* nr);

p = sortare;
q = minim;
sortare(v,n); // (*p)(v, n);

Exemplul 2:
int f(float x, float y)
{ int r=0; //instructiuni;
return r;}
void main(){
int a; int (*pf)(float, float);
pf=f; a=(*pf)(1,2);
printf(Rezultatul este %d, a);}

Vector de pointeri la funcii:


S se creeze un vector de pointeri la funcii care calculeaz i afieaz rezultatul
operaiilor de:
- adunare;
- scdere;
- nmulire;
- mprire
a dou numere reale.
Se va scrie i un exemplu de utilizare a vectorului de pointeri la funcii.

Declarare parametru tip


pointer la funcie i
Funcie cu parametru procedural
utilizare
void f(, tip_rezultat (*nume)(lista_parametri_formali), )
{tip_rezultat x; //.
x=(*nume)(lista_parametri_actuali); //
}
Apel funcie cu parametru procedural

tip_rezultat nume_functie(lista_parametri_formali) {}
void main()
{
f(,nume_functie,);}

2. Exemple:
E1.
Fie o funcie care realizarea sortarea elementelor
unui vector, dupa un anumit criteriu de sortare.
Criteriul este dat de un pointer la o funcie de
comparare, care descrie relaia de ordine dintre
dou elemente.
S se scrie programul care realizeaz sortarea
elementelor vectorului dup criteriul dat
(cresctor sau descresctor).

2. Exemple:
E2.
Fie o funcie care afieaz rezultatul prelucrrii
asupra unui vector. Prelucrarea este descris de o
alt funcie, primit ca parametru. Pot exista mai
multe funcii care descriu prelucrri diferite
asupra unui vector i oricare dintre ele poate fi
transmis ca parametru.
S se scrie programul care realizeaz dou
prelucrri asupra unui vector (exemplu: media
aritmetic, minimul), utiliznd funcia de mai sus.

2. Exemple:
E3
Metoda biseciei pentru rezolvarea unei

ecuaii transcendente

n, eps
x1

x1

x2