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
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
Synes godt om
Ny brugerNybegynder
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.