„Bendir“: Munur á milli breytinga
Efni eytt Efni bætt við
Ekkert breytingarágrip |
Ekkert breytingarágrip |
||
Lína 5:
Bendar eru til staðar með einum eða öðrum hætti í flestum [[forritunarmál]]um, svo [[C (forritunarmál)|C]], [[C++]], [[Pascal]] og [[FORTRAN]]. Notast verður við forritunarmálið [[C (forritunarmál)|C]] í dæmum í þessari grein.
Eitt af því sem margir eiga í erfiðleikum að skilja er notagildi
== Dæmi ==
Lína 13:
</pre>
Í [[C (forritunarmál)|C]] eru bendar táknaðar með "*" tákni framan við nafn breytunnar í skilgreiningunni:
<pre>
int *pBreyta;
</pre>
Svo gefum við bendinum gildi með því að láta
<pre>
pBreyta = &breyta;
</pre>
Ef við viljum prenta út eða nota stakið í
<pre>
int summa = 5 + *pBreyta; // hér inniheldur summa töluna 9.
Lína 29:
</pre>
Hér er dæmi sem sýnir hvernig bendar og breytur eru sendar í föll.
<pre>
// Byrjum á því að skilgreina tvær breytur
Lína 39:
void tvofalda( int x )
{
x *= 2; // ( hægt væri að skrifa sömu línu sem x = x * 2; )
}
void tvofaldaMedBendli( int* x )
{
(*x) *= 2;
}
// Köllum nú á föllin með breytunum
Lína 53 ⟶ 54:
cout << *pBreyta << endl; // hér prentast út 16
</pre>
Ástæðan fyrir því að fyrri breytan inniheldur enn töluna 8 er sú að breyta sjálf var ekki send inní fallið heldu bara gildið á henni (þ.e. talan 8).
En þegar bendirinn sjálfur var sendur inn í fallið tekur fallið "tvofaldaMedBendli" ekki við tölunni 8 heldur staðsetningu minnishólfsins sem inniheldur töluna 8.
Svo
Það sem skiptir líka máli hér er að þegar kallað er í fyrra fallið er
|