*   >> Lese Utdanning Artikler >> science >> programming

Peker til å fungere i C ++

ons pekte på. Parentes og stjerne er obligatoriske. Anta at du ønsker en peker til myFn () -funksjonen ovenfor med navnet, myFnPtr. I dette tilfellet pekeren initialisering er, float (* myFnPtr) (float, int) = myFn; Nå er navnet på en funksjon (f.eks myFn) faktisk en peker til en funksjon. Så, functionPointer og actualFunctionName blitt synonymt. I vårt tilfelle, myFnPtr og myFn blitt synonymt.

Ringe Pointed Funksjon av Pointer Mens functionPointer og actualFunctionName er synonymt du kan kalle den faktiske funksjon ved hjelp functionPointer på samme måte som du ville gjort oss actualFunctionName. I vår situasjon ovenfor, ville du gjøre for eksempel myFnPtr (68,78, 50) viser Eksempel Følgende kode hvordan du kan lage en peker til en funksjon og bruke den til å ringe funksjon: # include bruker namespace std; flyte myFn (float ident1, int ident2) {float forskjell = ident1 - ident2; returnere forskjell; } Float (* myFnPtr) (float, int) = myFn; int main () {float svar = myFnPtr (6,5, 2); domstol returnere 0; } Pointer av erklæringen I eksemplene ovenfor pekeren har blitt opprettet som, float (* myFnPtr) (float, int) = myFn; Dette skaper pekeren ved initialisering.

I uttalelsen adressen til den spisse funksjon er lagret i pekeren objekt (myFnPtr), under opprettelse av markøren. Du kan opprette pekeren ved erklæring og deretter tildele adressen verdi senere som følger: float (* myFnPtr) (float, int); myFnPtr = myFn; I dette tilfellet, bør begge uttalelser eller oppdraget uttalelsen være i en funksjon (som den viktigste funksjonen). Bruk av Pekeren til en funksjons Den primære bruken av en peker til en funksjon som en parameter til en annen funksjon.

Følgende kode illustrerer dette: # include bruker namespace std; flyte myFn (float ident1, int ident2) {float forskjell = ident1 - ident2; returnere forskjell; } Flyte squareDifference (float (* myFnPtr) (float, int)) {float sqr = myFnPtr (6,5, 2) * myFnPtr (6,5, 2); returnere sqr; } Int main () {float svar = squareDifference (myFn); domstol returnere 0; } Hemmeligheten er at du dele initialisering til sin venstre og høyre operand. Venstre operand går inn i parentes i annen funksjon (squareDifference) som en parameter, mens den høyre operand er brukt som argument i kallet den andre funksjonen.

Det vi har gjort her er å passere en peker til en funksjon samme som hva som skjer med pekere på grunnleggende gjenstander. Parameteren av funksjonen (squareDifference) er pekeren erklæring mens argumentet for det kall funksjon

Page   <<  [1] [2] [3] >>
Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.