Wat is de syntaxis voor het declareren van een array van functieaanwijzers zonder een aparte typedef te gebruiken?

Arrays van functiewijzers kunnen als volgt worden gemaakt:

typedef void(*FunctionPointer)();
FunctionPointer functionPointers[] = {/* Stuff here */};

Wat is de syntaxis voor het maken van een functiepointerarray zonder de typedefte gebruiken?


Antwoord 1, autoriteit 100%

arr    //arr 
arr [] //is an array (so index it)
* arr [] //of pointers (so dereference them)
(* arr [])() //to functions taking nothing (so call them with ())
void (* arr [])() //returning void 

dus uw antwoord is

void (* arr [])() = {};

Maar dit is natuurlijk een slechte gewoonte, gebruik gewoon typedefs🙂

Extra:
Vraag je je af hoe je een array van 3 pointers declareert naar functies die int nemen en een pointer retourneren naar een array van 4 pointers naar functies die double en char retourneren? (hoe cool is dat, hè? :))

arr //arr
arr [3] //is an array of 3 (index it)
* arr [3] //pointers
(* arr [3])(int) //to functions taking int (call it) and
*(* arr [3])(int) //returning a pointer (dereference it)
(*(* arr [3])(int))[4] //to an array of 4
*(*(* arr [3])(int))[4] //pointers
(*(*(* arr [3])(int))[4])(double) //to functions taking double and
char  (*(*(* arr [3])(int))[4])(double) //returning char

:))


Antwoord 2, autoriteit 14%

Onthoud “delcaratie bootst gebruik na”. Dus om die array te gebruiken, zou je zeggen

(*FunctionPointers[0])();

Juist? Daarom gebruik je om het te declareren hetzelfde:

void (*FunctionPointers[])() = { ... };

Antwoord 3, autoriteit 4%

Gebruik dit:

void (*FunctionPointers[])() = { };

Werkt zoals al het andere, u plaatst [] achter de naam.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes