Færibreyta

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

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

breyta
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

breyta
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

breyta
  1. 1,0 1,1 stiki1 kk. Geymt 3 maí 2015 í Wayback Machine á Tölvuorðasafninu
  2. 2,0 2,1 frumbreyta kv.. Afrit af upprunalegu geymt þann 3. maí 2015. Sótt 25. september 2011.

Heimildir

breyta

Fyrirmynd greinarinnar var „Parameter (computer science)“ á ensku útgáfu Wikipedia. Sótt 23. mars 2007.


   Þessi tölvunarfræðigrein er stubbur. Þú getur hjálpað til með því að bæta við greinina.