*   >> läser Utbildning artiklar >> science >> programming

Pekare till funktion i C ++

arameterTypes är parametertyper funktionen pekade. Parenteser och asterisk är obligatoriska. Anta att du vill ha en pekare till myFn () funktionen ovan med namnet, myFnPtr. I detta fall pekaren initiering är, float (* myFnPtr) (float, int) = myFn; Nu, är namnet på en funktion (t.ex. myFn) faktiskt en pekare till en funktion. Så, functionPointer och actualFunctionName blivit synonymt. I vårt fall, myFnPtr och myFn blivit synonymt.

Ringa Spetsig Funktion av Pointer Medan functionPointer och actualFunctionName är också kan du ringa faktiska funktion med functionPointer på samma sätt som du gör oss actualFunctionName. I vår situation ovan, skulle du göra till exempel myFnPtr (68,78, 50) visar Exempel Följande kod hur du kan skapa en pekare till en funktion och använda den för att anropa funktionen: #include using namespace std; flyta myFn (float ident1, int ident2) {float skillnad = ident1 - ident2; retur skillnad; } Float (* myFnPtr) (float, int) = myFn; int main () {float svar = myFnPtr (6,5, 2); cout återvända 0; } Pointer i förklaring I ovanstående exempel pekaren har skapats som, float (* myFnPtr) (float, int) = myFn; Detta skapar pekare av initiering.

I meddelandet adressen för den spetsiga funktionen lagras i pekarobjektet (myFnPtr), under skapandet av pekaren. Du kan skapa pekaren efter anmälan och sedan tilldela adressvärdet senare enligt följande: float (* myFnPtr) (float, int); myFnPtr = myFn; I det här fallet, bör båda uttalanden eller tilldelningssatsen vara i en funktion (som huvudfunktionen). Användning av pekare till en funktion Den primära användningen av en pekare till en funktion är som en parameter till en annan funktion.

Följande kod illustrerar detta: #include using namespace std; flyta myFn (float ident1, int ident2) {float skillnad = ident1 - ident2; retur skillnad; } Flyta squareDifference (float (* myFnPtr) (float, int)) {float sqr = myFnPtr (6,5, 2) * myFnPtr (6,5, 2); retur sqr; } Int main () {float svar = squareDifference (myFn); cout återvända 0; } Hemligheten är att du dela initiering till vänster och höger operand. Den vänstra operand går in i parenteserna den andra funktionen (squareDifference) som en parameter, medan den högra operanden används som argument i kallelse den andra funktionen.

Vad vi har gjort här är att passera en pekare till en funktion samma som vad som händer med pekare av grundläggande objekt. Parametern för funktionen (squareDifference) är pekaren deklarationen medan argument anropsfunktionen är minnesadress

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 läser Utbildning artiklar,https://utbildning.nmjjxx.com All rights reserved.