CATEGORII DOCUMENTE |
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 |
Vizualizari: 1383
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved