Avatar billede gg Praktikant
23. januar 2002 - 02:48 Der er 1 løsning

Parameteróverførsel

hvilke parametroverførselser forefindes der ?. Hvorfor er det forskellige parametre fra sprog til sprog. Hvad er grunden til at nogel beslutter kun at bruge call by reference. Og hvordan virker denner overførsel i henholde til stack statiskepointere, og dynamiske pointere
Avatar billede jakoba Nybegynder
23. januar 2002 - 13:29 #1
I moderne sprog er der kun to typer:
    pass by value                // værdien selv
og 
    pass by reference            // pegepind til værdien

Og du kan ikke selv vælge hvilken der benyttes.
Til 'atomare' værdier benyttes altid 'pass by value'
Til strukturer/objekter benyttes altid 'pass by reference'

Det gør det nemt at allokere stakplads til variablene. De fylder alle præcis eet standard maskinord, hvor stort det nu er (det er vist 64-bit for tiden).

Bagdelen er så at hvis man ændrer på værdien i en integer parameter vil den ændring være lokal i funktionen. efter returnering har parametervariablen stadig sin gamle værdi.

Men hvis man ændrer på værdier i et objekt der er ankommet spm parameter er det en varig ændring man laver. den holder også efter funktionen er kørt ferdig.

Der har været andre, fx havde Algol en type parameteroverførsel der hed 'pass by name'. Den var meget tricky og kunne da være nyttig her og der, men var mestendels noget bæ som generede uforståelig kode:

i kaldet:    vaiabel = enfunktion( array2[celle] );
kunne funktionen så ændre værdien i celle variablen for at få parameteren til at være forskellige elementer i array2 på forskellige tidspunkter.

mvh JakobA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester