2012-03-12 13 views
7

Mam naprawdę ciężki czas na zrozumienie składni wskaźników funkcji. Próbuję to zrobić, mam tablicę wskaźników funkcji, która nie przyjmuje żadnych argumentów i zwraca wskaźnik pustego. Czy ktoś może w tym pomóc?Tablica wskaźników funkcji w C

+5

Generalnie otrzymasz lepszą odpowiedź, jeśli opublikujesz kod, który próbowałeś, nawet jeśli nie działa, i wyjaśnij, jak najlepiej możesz dokładnie określić, na czym polega problem. To pokazuje więcej wysiłku z twojej strony. –

+0

sprawdź to [link] (http://c-faq.com/decl/spiral.anderson.html) – Vikram

Odpowiedz

16
  1. Po pierwsze, należy dowiedzieć się o cdecl:

    cdecl> declare a as array 10 of pointer to function(void) returning pointer to void 
    void *(*a[10])(void) 
    
  2. Można to zrobić ręcznie - wystarczy zbudować go od wewnątrz:

    a

    jest array:

    a[10]

    wskaźników:

    *a[10]

    do funkcji:

    (*a[10])

    biorące żadne argumenty:

    (*a[10])(void)

    re obracając void *:

    void *(*a[10])(void)

  3. Jest znacznie lepiej, jeśli używasz typedef aby ułatwić Ci życie:

    typedef void *(*func)(void); 
    

    A następnie dokonać tablicy:

    func a[10]; 
    
+0

Uwaga: link na początku jest bardzo pomocny! – Ziezi

2

Używaj typedef s

typedef void* func(void); 
func *arr[37]; 
7

Ilekroć złożona składnia staje się zbyt skomplikowana, typedef zwykle czyści rzeczy.

E.g.

typedef void *(* funcPtr)(void); 

funcPtr array[100]; 

Które bez typedef Chyba będzie wyglądać następująco:

void *(* array[100])(void); 
2

start z nazwą tablicy i pracować na swój sposób, pamiętając, że [] i () wiążą przed * (*a[] jest tablicą wskaźnika, (*a)[] jest wskaźnikiem do tablicy, *f() jest funkcją powrocie wskaźnik, (*f)() jest wskaźnik do funkcji):

Powiązane problemy