Home

Funksjonskall

Funksjonskall er en instruksjon der programmet ber en funksjon om å kjøre. Ved et kall flyttes kontrollen inn i funksjonens kropp, og når funksjonen er ferdig, går kontrollen tilbake til stedet der kallet ble gjort. En funksjon kan også returnere en verdi til kalleren.

Før selve kallet evalueres vanligvis argumentene. Verdier kan overføres ved verdi, ved referanse eller etter språkets

Når et kall skjer, opprettes en aktiveringsramme på kall-stakken. Rammen inneholder parameterverdier, lokale variabler og returadressen.

Returverdien brukes ofte i uttrykk som del av koden som kalte funksjonen. Noen språk har void-funksjoner uten

Recursjon oppstår når en funksjon kaller seg selv, ofte med en basiskondisjon som avgrenser antall kall. I

Ytelse og optimaliseringer varierer mellom språk. Tail-call optimization kan gjøre avsluttede kall mer effektive ved å

Eksempel: result = add(2, 3). Funksjonen add aksepterer to tall og returnerer deres sum.

modell
for
parameteroverføring.
Verdi-overføring
kopierer
data
til
funksjonens
lokale
rom,
mens
referanse-overføring
gir
tilgang
til
de
opprinnelige
dataene.
Når
funksjonen
returnerer,
fjernes
rammen
og
kontrollen
går
tilbake
til
kallerens
neste
instruksjon.
returverdi.
språk
med
høyereordens
funksjoner
kan
funksjoner
behandles
som
verdier:
de
kan
passeres
som
argumenter,
returneres
eller
lagres
i
datastrukturer.
Lukkede
funksjoner
kan
fange
variabler
fra
omgivelsene.
ikke
øke
stakken,
men
ikke
alle
språk
støtter
dette.
Kompilatorer
kan
også
inline-kall
eller
bruke
andre
teknikker
for
å
spare
tid
og
plass.