Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Pointeri la functii

c



+ Font mai mare | - Font mai mic



Pointeri la functii

Intr-un fel, un pointer functie este un nou tip de data. Chiar daca o functie nu este o variabila, aceasta are o locatie fizica in memorie care poate fi atribuita unui pointer. Adresa atribuita pointerului este punctul de intrare al functiei. Acest pointer poate fi utilizat in locul numelui functiei. Pointerul permite de asemenea functiilor sa fie pasate (trecute) ca argumente in alte functii.



Adresa unei functii se obtine utilizand numele functiei fara nici o paranteza sau argumente (ca in cazul tablourilor).

Exemplu:

# include <stdio.h>

# include <ctype.h>

void check();

int strcmp();    /* prototip functie */

void main()

void check (char *a, char *b, int (*cmp) ())

/* cu int (*cmp) () se declara un pointer functie */

Declararea lui strcmp() in main() s-a facut din doua motive:

1) programul trebuie sa stie ce tip de valoare returneaza strcmp();

2) numele trebuie cunoscut de compilator ca si functie.

Deoarece in C nu exista o modalitate de a declara direct un pointer functie, acesta se declara indirect folosind un pointer void care poate primi orice fel de pointer.

Apelul functiei check() se face avand ca parametri doi pointeri la caracter si un pointer functie.

Instructiunea : (*cmp)(a, b)

realizeaza apelul functiei, in acest caz strcmp() iar a si b sunt argumentele acestuia.

Exemplu:

# include <stdio.h>

# include <ctype.h>

int strcmp(); /* prototip functie */

void main()

Observatie:

Functia check() poate utiliza direct functia strcmp() sub forma:

check (s1, s2, strcmp);

Exemplu:

# include <stdio.h>

# include <ctype.h>

void check ();

int strcmp();    /* prototip functie */

void main()

void check (char *a, char *b, int (*cmp) ())

// se defineste functia check()

/* cu int (*cmp) () se declara un pointer functie */



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1395
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved