Forskel på Actual & Formal Parameters

Tags:    c++

Hej med jer,

Lige et spørgsmål for at se om jeg har forstået forskellen på de formelle og aktuelle parametre:

Jeg har lavet et pseudo-kode-skellet:
Fold kodeboks ind/udKode 



Jeg har forstået at Reference parametre gemmer på adressen til de tilsvarende aktuelle parametere.
Men hvad med Value parameters? Hvad er forskellen der?

Udfra dette program;
Fold kodeboks ind/udKode 



Kan jeg se at "funOne" hænger sammen 2 steder - først så kører compileren igennem, indtil "funOne(num1, num2, ch);" og dernæst hopper ud af main() funktionen og ned til
void funOne(int a, int& b, char v) og dermed bliver linie 13 udskrevet - efter det, bliver line 6 udskrevet. Det er som om compileren hopper frem og tilbage?? Jeg kan godt se at man har de formelle parametre (int a, int& b, char v) som peger på (num1, num2, ch), men i bund og grund hvad gør & referancen/adressen der?

Eller har jeg forstået helt forkert og bytter om på de forskellige parametre??


Hjælp påskønnes utroligt meget!!
På forhånd 1000 mange tak!






Indlæg senest redigeret d. 02.03.2008 14:45 af Bruger #13344
forskellen på Pass-by-value og Pass-by-reference er:
-Pass-by-reference er billigere rent cpu mæssigt da der jo sådan set kun skal fortælles at noget ligger på en given adresse mens ved pass-by-value skal den tage det der ligger på en given address og copier det hele til et andet sted i memory, derfor er pass-by-reference at fortrække hvor end det er muligt, men tilgengæld skal man også passe på med hvad man bruger det til, for enhver ændring function gør på en parameter som er by reference er jo på den sendte variable. Pass-by-reference anden fordel er jo at man let kan lave functioner der "returnere" mere ind 1 værdi. F-eks bliver det tit brugt i function der loader data ind i object fra filer,f.eks:
Person p;
if(loadPerson("FileNavn",p)){
}
der loader en person fra en fil ind i p og returnere true ved succes eller false ved failure, if you couldn't pass by reference but only value you would have to agree on some non person setting of an object of Person or create a new data structure only with person and a boolean to return
struct loadedPerson{
bool failue;
Person person;


Og lige en side bemærkning compileren gør intet af det du siger, debugeren og kørsel af programmet gør hvad du siger. En compiler tager bare din kode og oversætter den til maskin kode, eller et andet lav nivaue kode.
};



1000 tak for svar!

Nu ved jeg at pass-by-reference skrives med &... men kan du fortælle mig evt hvordan Pass-by-value ser ud på pseudo-kode?





skriver du bare ingenting
void func(VariableType ParameterNavn){
}

kaldes med

VariableType VariableNavn
func(VariableNavn);



1000 tak! ;-)



t