Указатель на массив указателей на функции - PullRequest
4 голосов
/ 07 апреля 2011
int (*rdPtrList[4])(unsigned int addr, unsigned int data);

Выше объявляется массив указателей размера 4 для функций, который возвращает int и принимает два беззнаковых int.Я хотел бы сделать указатель на этот массив.Возможно ли это в C?

Ответы [ 3 ]

16 голосов
/ 07 апреля 2011

Опуская параметры для удобства чтения:

        p         -- p
       *p         -- is a pointer
      (*p)[4]     -- to a 4-element array
     *(*p)[4]     -- of pointers
    (*(*p)[4])()  -- to functions 
int (*(*p)[4])(); -- returning int. 
7 голосов
/ 07 апреля 2011

Ах, хитрый хитрый !!!

Я думаю это работает

int (*(*rdPtrList)[4])(unsigned int addr, unsigned int data);

, потому что компилятор говорит мне _countof(*rdPtrList) равно 4.


(Я хотел бы, чтобы вы могли просто сказать int function(unsigned int addr, unsigned int data)[4]*, как вы можете в D, это намного более читабельно: это будет «указатель на массив функций».)

4 голосов
/ 07 апреля 2011

Попробуйте это:

typedef int(*rdPtrList_t[4])(unsigned int addr, unsigned int data);
rdPtrList_t *ptrToArray;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...