„Færibreyta“: Munur á milli breytinga

Efni eytt Efni bætt við
m +iw
m sameina
Lína 1:
'''Færibreytur''' eru mikið notaðar í hinum ýmsu forritunarmálum. Þær gefa fallinu sem þær tilheyra auknar upplýsingar hvernig það skal vinna.
 
Með færibreytum er átt við eins konar "ramma" sem eru fyrir hendi í öllum málum, en fylla má út á mismunandi hátt (gefa mismunandi gildi) í ólíkum málum.
Lína 10:
myndi skila a +b, enda heitir fallið jú summa.
 
==Færibreyta==
{{stubbur}}
Færibreyta er í raun ekkert annað en vísir á minnishólf sem við höfum skýrt einhverju nafni okkur til einföldunar. Þegar við sendum færibreytu inn í fall höfum við val um að senda hana á nokkra vegu hvað minnishólfameðhöndlun varðar. Við getum sent inn afritunarfæribreytu eða tilvísunarfæribreytu. Munurinn er sá að þegar [[afritunarfæribreyta]] er send inn er gildi innsendu breytunnar afritað í nýtt minnishólf sem eingöngu er aðgengilegt innan fallsins. Þegar breyta er send inn í fall sem [[tilvísunarfæribreyta]] er í raun verið að senda inn tilvísun í minnishólf breytunnar. Þannig vísar breytan sem lifir innan fallsins í sama minnishólf og breytan sem send var inn í fallið og hafa því allar breytingar áhrif á báðum stöðum.
 
Einfaldast er að sýna þetta með stuttum dæmum:
 
=== Afritunarfæribreyta===
<pre>
void fall(int a, int b);
 
int _tmain(int argc, _TCHAR* argv[])
{
int x,y;
x = 1;
y = 2;
fall( x ,y );
cout << "x = " << x << " & y = " << y << endl;
return 0;
}
 
void fall(int a, int b)
{
a = 3;
 
b = 4;
}
</pre>
Efst skilgreinum við fallið "fall" sem tekur inn tvær færibreytur með tölulegum gildum. Í aðal forritinu (main) búum við til tvær talnabreytur, x og y sem við gefum svo gildin 1 og 2. Því næst köllum við í fallið "fall" og sendum '''x''' og '''y''' inn í fallið sem færibreytur. Við þetta afritast gildi '''x''' inn í nýtt minnishólf breytunnar '''a''' og gildi '''y''' í nýtt minnishólf breytunnar '''b'''. Í fallinu er breytunni '''a''' gefið gildið '''3''' og breytunni '''b''' gefið gildið '''4'''. Að keyrslu fallsins loknu heldur keyrsla aðal forritsins áfram og gildi breytanna '''x''' og '''y''' er prentað út á skjá. Þar sem '''a''' og '''b''' fengu ný minnishólf hefur gildi þeirra engin áhrif á '''x''' og '''y''' og því prenatast "x = 1 & y = 2"
 
===Tilvísunarfæribreyta===
<pre>
void fall(int& a, int& b);
 
int _tmain(int argc, _TCHAR* argv[])
{
int x,y;
x = 1;
y = 2;
fall( x ,y );
cout << "x = " << x << " & y = " << y << endl;
return 0;
}
 
void fall(int& a, int& b)
{
a = 3;
 
b = 4;
}
</pre>
Eini munurinn í skilgreiningu fallsins "fall" er að '''&''' merkinu hefur verið bætt fyrir framan skilgreiningu '''a''' og '''b'''. Þegar '''x''' og '''y''' eru svo send inn í fallið vísar '''a''' á sama minnishólf og '''x''' og '''b''' á sama minnishólf og '''y'''. Þegar '''a''' er síðan gefið gildið '''3''' vistast það í þetta sameiginlega minnishólf og þegar '''b''' er gefið gildið '''4''' vistast það í hólfið sem '''b''' á sameiginlegt með '''y'''. Í þessu tilfelli skrifast því út "x = 3 & y = 4" í lokin.
 
== Tilvísanir ==
{{Enwikiheimild|Parameter (computer science)|23. mars|2007}}
 
{{stubbur|tölvunarfræði}}
 
[[Flokkur:Forritun]]