Færibreyta

Þessi grein fjallar um færibreytu í tölvunarfræði en færibreyta getur vísað til stika í stærðfræði.

Stikistiki1 kk.  á Tölvuorðasafninu eða færibreyta er í forritun breyta sem vísar til gagna sem falli er látið í té, þar sem gögnin sjálf kallast frumbreytur eða óháðar breytur. 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.

Við skulum taka dæmi um færibreytur með falli skrifað í forritunarmálinu C. 

int summa( int a, int b )

Í þessu tilfelli eru færibreyturnar heiltölurnar a og b og hegðar fallið sér í samræmi við færibreyturnar.  Mjög líklegt má telja að fallið
myndi skila a +b, enda heitir fallið jú summa.

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 
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;
}
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 
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;
}
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 

 Heimildir 

Flokkur:Forritun

fr:Paramètre#Informatique