Pointeri la Funcții

Laborator
8/10 (1 vot)
Domeniu: Calculatoare
Conține 1 fișier: pdf
Pagini : 11 în total
Cuvinte : 2533
Mărime: 173.73KB (arhivat)
Publicat de: Simion Zamfir
Puncte necesare: 0
Profesor îndrumător / Prezentat Profesorului: Elena Serban

Extras din laborator

1.1. Declararea unui pointer la functii

Pointerii folositi pâna acum au fost pointeri la diferite tipuri de date, dar este

posibil sa avem si pointeri la functii. Pointerii la functii sunt folositi din aceleasi motive

ca si pointerii la date: atunci când se doreste un alt nivel de indirectare, când dorim

ca aceeasi secventa de cod sa apeleze functii diferite depinzând de conditiile concrete

ale programului.

Ca si în cazul pointerilor la date, pentru utilizarea pointerilor la functii trebuie sa

declaram o variabila care sa contina un pointer la functie. Un pointer la o functie se

declara astfel:

tip (*pf)(tip1 p1, tip2 p2, ..., tipn pn);

unde

tip este tipul functiei (tipul valorii returnate de functie)

tip1 p1, tip2 p2, ..., tipn pn este lista parametrilor functiei care va fi

accesata prin intermediul pointerului. Numele parametrilor, adica p1, p2, ..., pn

pot lipsi.

Exemplu, daca scriem

int (*pfi)(float a, int b);

se declara pfi ca fiind un pointer la o functie care va returna un întreg. Ca si în alte

declaratii * indica faptul ca avem un pointer, iar ( ) arata ca avem de a face cu o

functie. Parantezele din (*pfi) sunt necesare deoarece si în declaratii exista o

anumita precedenta a operatorilor (o anumita ordine de evaluare  interpretare) ca si

în expresii si când ordinea implicita nu este cea dorita, trebuie sa o schimbam folosind

parantezele de explicitare. În declaratii, ( ) - operatori de functie si [ ] - operatorii

de indexare sunt mai prioritari decât * indicând pointerii. Fara parantezele

mentionate, declaratia de mai sus arata astfel:

int *pfi(float a, int b);

si declara o functie pfi care va returna un pointer la întreg. Cu parantezele explicite,

int (*pfi)() ne spune ca pfi este mai întâi un pointer, ca acest pointer indica o

functie si mai apoi ca functia respectiva returneaza un întreg.

Pointerii la functii se pot defini si ca noi tipuri de date prin utilizarea declaratiei

de tip typedef. De exemplu, putem scrie

typedef int (*FPTR)(float a, int b);

si identificatorul FPTR este un sinonim pentru tipul de data pointer la o functie care

returneaza un întreg, astfel încât declaratia

FPTR pfi;

este echivalenta cu

int (*pfi)(float a, int b);

O data declarat, unui pointer la functie i se poate atribui valoarea adresei de

început a functiei dorite. Daca avem prototipurile urmatoarelor functii

int f1(float a, int b);

int f2(float a, int b);

int f3(float a, int b);

atunci putem scrie:

pfi = &f1;

sau

if (conditie)

pfi = &f2;

else

pfi = &f3;

Bineînteles, nu vom fi restrânsi la aceste doua forme, putem asigna pointeri la

functii în orice conditii dorim. Al doilea exemplu poate fi scris mai compact:

pfi = conditie ? &f2 : &f3;

În aceste exemple am folosit operatorul &, asa cum am facut pâna acum pentru

a genera un pointer. Totusi când generam pointeri la functii, operatorul & este

optional, deoarece atunci când mentionam numele unei functii fara sa o apelam

mentionam de fapt adresa functiei respective, numele unei functii fiind de fapt un

pointer la functia data. Astfel se poate scrie:

pfi = f1;

Preview document

Pointeri la Funcții - Pagina 1
Pointeri la Funcții - Pagina 2
Pointeri la Funcții - Pagina 3
Pointeri la Funcții - Pagina 4
Pointeri la Funcții - Pagina 5
Pointeri la Funcții - Pagina 6
Pointeri la Funcții - Pagina 7
Pointeri la Funcții - Pagina 8
Pointeri la Funcții - Pagina 9
Pointeri la Funcții - Pagina 10
Pointeri la Funcții - Pagina 11

Conținut arhivă zip

  • Pointeri la Functii.pdf

Alții au mai descărcat și

Arhitectura calculatoarelor - Intel vs AMD

Rezultatele din testul 3DS Max 7 SPECapc Test Testul alaturat consta in crearea modelelor 3D, modificarea si randarea scripturilor. Conform...

Autentificarea prin semnătură digitală

Introducere O semnatura digitala reprezinta o informatie care il identifica pe expeditorul unui document. Semnatura digitala este creata prin...

Programare orientată pe obiect C++

1. INTRODUCERE ÎN C++ Exista limbaje concepute strict pe baza conceptelor programării orientate pe obiecte (POO), de exemplu Simula sau Smalltalk....

Sistem de Prognosticare a Unei Avarii

Acest sistem calculeaza gradul de avariere a unei cladiri în cazul unui cutremur, precum si posibila necesitate a reconstructiei cladirii (partiala...

Laboratoare programarea orientată pe obiecte

1. Obiective - Formarea unei imagini generale, preliminare, despre programarea orientată pe obiecte (POO) și deprinderea cu noile facilitați...

Clase Derivate

1. Clase derivate. Prin mostenire, atributele unei clase de baza sunt transmise unor clase derivate. Derivarea permite definirea unor clase noi,...

Clase

1. Programare procedurala –Programare orientata pe obiecte. Limbajul C, ca si Pascal, utilizeaza modelul programarii structurate procedurale, care...

Programare orientată pe obiecte

Cap. 1 Paradigme de programare şi metode de proiectare a programelor Noţiunea de paradigmă se bazează pe un cuvânt ce provine din limbile latină...

Te-ar putea interesa și

Proiect POO

I. TEMA PROIECTULUI I. 1. ENUNT Se considera un vector care contine numarul variabil de perechi de pantaloni (p[20]), care se pot produce intr-o...

Manual Limbaj C

1. Generalitati asupra limbajului C 1.1. Introducere Limbajul C a fost creat la începutul anilor '70 de catre Brian W Kernigham si Dennis M...

POO

Un TDA este constituit atat din date cat si functii, interfata unui TDA fiind conferita de multimea de operatii care se pot efectua asupra datelor...

PHP

I. NOTA INTRODUCTIVA Disciplina PROGRAMARE WEB AVANSATA asigura pregatirea studentilor pentru proiectarea si realizarea de pagini WEB si...

Limbajul C

În continuare vom defini un calculator, ca fiind un sistem electronic de foarte mare complexitate, capabil de prelucrarea automata a datelor de...

Curs C++

Limbajele C si C++ sunt limbaje de programare de nivel înalt. Limbajul C a aparut în anii 1970 si a fost creat de Dennis Ritchie în...

Programarea Calculatoarelor și Limbaje de Programare

Introducere Lucrarea de faţă îşi propune să acopere, nevoile programatorului de aplicaţie inginerească care, spre deosebire de informaticianul de...

Microprocesoare

1.1. CALCULATORUL, UN SISTEM AUTOMAT DE PRELUCRARE A DATELOR Calculatorul (mai precis, calculatorul numeric programabil) = sistem electronic...

Ai nevoie de altceva?