Meidän tilanteessa edellä, tekisit esimerkiksi myFnPtr (68,78, 50) Esimerkki Seuraava koodi näyttää miten voit luoda osoittimen toiminnon ja käyttää sitä soittaa toiminto: # include using namespace std; float myFn (float ident1, int ident2) {float ero = ident1 - ident2; palata ero; } Float (* myFnPtr) (float, int) = myFn; int main () {float vastaus = myFnPtr (6.5, 2); cout palata 0; } Pointer julistuksessa Edellä esimerkeissä osoitin on luotu, float (* myFnPtr) (float, int) = myFn; Tämä luo osoitinta alustuksen.
Julkilausumassa osoite huomautti toiminto tallennetaan osoitin objektin (myFnPtr), luomisen aikana osoittimen. Voit luoda osoitinta ilmoitus ja sitten antaa osoitteen arvo myöhemmin seuraavasti: float (* myFnPtr) (float, int); myFnPtr = myFn; Tässä tapauksessa molemmat lausunnot tai määrityslauseeseen pitäisi olla funktio (kuten päätehtävä). Käytä Pointer toiminnon ensisijainen käyttö osoitin toiminto on kuin parametri toisen toiminnon.
Seuraava koodi kuvaa tätä: # include using namespace std; float myFn (float ident1, int ident2) {float ero = ident1 - ident2; palata ero; } Float squareDifference (float (* myFnPtr) (float, int)) {float sqr = myFnPtr (6.5, 2) * myFnPtr (6.5, 2); palata sqr; } Int main () {float vastaus = squareDifference (myFn); cout palata 0; } Salaisuus on, että voit jakaa alustuksen osaksi sen vasempaan ja oikeaan operandin. Vasen operandi menee sulkeiden muu toiminto (squareDifference) kuin parametri, kun taas oikea operandi käytetään väitettä kutsuminen muu toiminto.
Mitä olemme tehneet täällä on siirtää osoitin toiminto sama kuin mitä tapahtuu osoittimien perusoikeuksien esineitä. Parametri toiminto (squareDifference) on osoitin ilmoituksen kun argumentti kutsuvan toiminto on muistiosoite että osoitin kohde on arvona. Erona on, että osoitin ilmoitus on monimutkainen ja se osoittaa toimintoa. Lue edellä koodi, jos et ole jo tehnyt niin. Muut toiminto saattaa olla enemmän kuin yksi parametri (argumentti); vain erottaa parametrit pilkuilla, vaikka jotkut parametrit ovat viitteitä toimintoja.
Edellä koodi ei näytä kovin hyödyllinen, mutta käyttäen osoitin toimivat parametri muuhun tehtävään voi todella tulla monimutkain