Opkald Spids Funktion af Pointer Mens functionPointer og actualFunctionName er synonyme du kan kalde den aktuelle funktion ved hjælp functionPointer på samme måde, som du ville os actualFunctionName. I vores situation ovenfor, ville du gøre for eksempel myFnPtr (68,78, 50) Eksempel Følgende kode viser, hvordan du kan oprette en pegepind til en funktion, og bruge det til at kalde funktionen: #include bruge namespace std; flyde myFn (float ident1, int ident2) {float forskel = ident1 - ident2; tilbage forskel; } Float (* myFnPtr) (float, int) = myFn; int main () {float svar = myFnPtr (6,5, 2); cout returnere 0; } Pointer af erklæring I eksemplerne ovenfor markøren er blevet skabt som, float (* myFnPtr) (float, int) = myFn; Dette skaber pointer ved initialisering.
I oversigten adressen på den spidse Funktionen er gemt i markøren objekt (myFnPtr), under oprettelsen af markøren. Du kan oprette markøren ved erklæring, og derefter tildele adressen værdi senere som følger: float (* myFnPtr) (float, int); myFnPtr = myFn; I dette tilfælde skal begge erklæringer eller opgaven erklæring være i en funktion (som den vigtigste funktion). Brug af Pointer til en funktion Den primære anvendelse af en pointer til en funktion er som en parameter til en anden funktion.
Følgende kode illustrerer dette: #include hjælp namespace std; flyde myFn (float ident1, int ident2) {float forskel = ident1 - ident2; tilbage forskel; } Flyde squareDifference (float (* myFnPtr) (float, int)) {float sqr = myFnPtr (6,5, 2) * myFnPtr (6,5, 2); returnere sqr; } Int main () {float svar = squareDifference (myFn); cout returnere 0; } Hemmeligheden er, at du opdele initialiseringen i sin venstre og højre operand.
Den venstre operand går i parentes i den anden funktion (squareDifference) som en parameter, mens den højre operand bruges som argument på den opkaldende i den anden funktion. Hvad vi har gjort her er at passere en pegepind til en funktion samme som, hvad der sker med pointere de grundlæggende objekter. Parameteren af