39002

39002



124


ROZDZIAŁ 17. WSKAŹNIKI

określone miejsce w pamięci. A ponieważ funkcja ma swój adres®, to nie ma przeszkód, aby i na nią wskazywał jakiś wskaźnik.

Deklaracja wskaźnika na funkcję

Tak naprawdę kod maszynowy utworzony po skompilowaniu programu odnosi się właśnie do adresu funkcji. Wskaźnik na funkcję różni się od innych rotlzajów wskaźników. Jedną z głównych różnic jest jego deklaracja. Zwykle wygląda ona tak:

typ.zuracanej.wartości (•nazwa.wskaźnika)(typl parametrl, typ2 parametr2);

Oczywiście parametrów może być więcej (albo też w ogóle może ich nie być). Oto przykład wykorzystania wskaźnika na funkcję:

ffinclude <stdio.h>

int suną (int a, int b)

{

return a+b;

>

int main O

(

int (•wsk.suma)(int a, int b); wsk.suna ■ suma;

printf("4*5“Xd\n", wsk.suma(4,5)); return 0;

>

Zwróćmy uwagę na dwie rzeczy:

1.    przypisując nazwę funkcji bez nawiasów do wskaźnika automatycznie informujemy kompilator, że chodzi nam o adres funkcji

2.    wskaźnika używamy tak, jak normalnej funkcji, na którą on wskazuje

Do czego można użyć wskaźników na funkcje?

Język C jest językiem strukturalnym, jednak dzięki wskaźnikom istnieje w nim możliwość “zaszczepienia*' jK-wnych obiektowych właściwości. Wskaźnik na funkcję może być lip. elementem struktury — wtedy mamy lxardzo prymitywną muniastkę klasy, którą dobrze znają programiści, piszący w języku C++. Ponadto dzięki wskaźnikom możemy tworzyć mechanizmy działające na zasadzie funkcji zwrrotnej'. Dobrym przykładem może być np. tworzenie sterowników, gdzie musimy poinformować różne podsystemy, jakie funkcje w naszym kodzie służą do wykonywania określonych czynności. Przykład:

8truct urządzenie { int (*otuorz)(void); void (‘zamknij)(void);

>;

int moje.urzadzenie.otworz (void)

{

®Tak naprawcie kod maszynowy utworzony po skompilowaniu prognunu odnosi się właśnie do adresu funkcji.

"Funkcje zwrotne znalazły zastosowanie głównie w programowaniu GUI



Wyszukiwarka

Podobne podstrony:
tworzenie nowych miejsc pracy ponieważ pracodawców po prostu na to nie stać. • Wskaźnik deficytu obr
126 ROZDZIAŁ 17. WSKAŹNIKI I struct urządzenie moje_urzadzeuie; moje_uxzadzenie.nl =
114 ROZDZIAŁ 17. WSKAŹNIKI +--------► IkomórkalI +--------+ llllllllll * (unsigned char)
116 ROZDZIAŁ 17. WSKAŹNIKI Wskaźniki można również od siebie odejmować, czego wynikiem jest
118 ROZDZIAŁ 17. WSKAŹNIKI Zwróćmy uwagę na wywołanie func(kz);. Należy pamiętać, by do funkcji
120 ROZDZIAŁ 17. WSKAŹNIKI Wskaźniki na stalą wartość są przydatne między innymi w sytuacji gdy mamy
122 ROZDZIAŁ 17. WSKAŹNIKI Ostatnią funkcją jest funkcja ca!loc(). Przyjmuje ona dwa argumenty: licz
126 ROZDZIAŁ 17. WSKAŹNIKI { struct urządzenie moje.urządzeńle; moje.urzadzenie.m -
Poznaj C++ w$ godziny0142 Wskaźniki 131Przypisywanie adresu do wskaźnika Jak już mówiliśmy, każda zm
df5 Rozdział 4 Zadanie 5 Obliczyć pochodne do rzędu n dla funkcji: (pochodna 2 rzędu jest to pochodn
Scan 120303 0007 124 Rozdział VI. Ustrój administracji państwowej rainistracją rządową”. Zapis ten w
ksi ¬ki studia&2 268 Rozdział 17 /clrowa, ponieważ w wynikli inaktywacji X w części komórek iloehoil
PwTiR063 124 Rozdział 5 z 2006 r. odwołuje się co do znaczenia takich określeń, jak budynki, kategor
DSC00666 Wskaźniki Wskaźnik może wskazywać miejsce w pamięci obiektu nieokreślonego typu, np.: void
DSC00763 Wskaźniki do funkcji Wskaźnik do funkcji wskazuje adres miejsca w pamięci, w którym zaczyna
3 6 (4) 3 -6 WSKAŹNIKI I URZĄDZENIA KONTROLNE DESKA ROZDZIELCZA 3    4 17 16 15

więcej podobnych podstron