Dziwne wskaźniki

0

Witam. Czy mógłby mi ktoś wyjaśnić opisowo, jak działają oba te wskaźniki?:

void fe ( int ( * ( *[4] ) () ) [5] );
char ( **tab_a[5] ) (void);

bardzo dziękuję za odpowiedź

0

Dawno tego nie robiłem ale:

  • pierwszy to funkcja fe która jako argument przyjmuje wskaźnik na 4-elementową tablicę wskaźników do funkcji zeroargumentowych zwracajacych 5-elementoą tablicę intów
  • drugie to: tab_a jest 5-cio elementową tablicą wskaźników do wskaźnika na funkcje przyjmujące jeden argument typu void (czyli bezargumentowe funkcje) i zwracające char.
0

A ta pierwsza nie przyjmuje 5-cio elementowej tablicy na funkcje zwracające 4 elementowe talblie?

1
user@ubuntu-vm:~$ cdecl
Type `help' or `?' for help

cdecl> explain void fe ( int ( * ( *[4] ) () ) [5] );
declare fe as function (array 4 of pointer to function returning pointer to array 5 of int) returning void

cdecl> explain char ( **tab_a[5] ) (void);
declare tab_a as array 5 of pointer to pointer to function (void) returning char

czyli pierwsze oznacza funkcję fe zwracającą void a pobierającą tablicę czterech wskaźników na funkcje bezargumetowe pobierające wskaźnik na 5 intów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1