Ef x er stak í minni (en ekki bendir (pointer) á stak í minni) þá er *&x alltaf = x.
int i = 5; (i == *&i) == true
& fyrir framan stak færir okkur bendi
* fyrir framan bendi færir okkur stakið sem bent er á.
&*x er ekki löglegt, a.m.k. kvartar minn þýðandi (VC++6.0 sp4)
Bendameðhöndlun í C++ er vissulega dáldið ruglingsleg, en það er hægt að gera ýmislegt til að einfalda hlutina.
Í fyrsta lagi verður að maður að vera 100% viss um muninn á bendum og tilvikum. Eða svo við orðum þetta öðruvísi, muninn á minnissvæði og gildinu í minnissvæðinu.
* Ekki nota benda nema það sé nauðsynlegt. Notaður reference parametra þegar þú getur. Kóperaðu hluti á milli. Notaðu collection klasana úr STL til að geyma hluti o.sv.frv.
t.d. í staðin fyrir void foo(int* a) -> void foo(int& a)
std::vector<int> slatti_af_a(n) í staðin fyrir int* slatti_af_a = new int[n]
* Ekki nota bendaútreikninga nema þú komist ekki hjá því.
* Þegar þú notar benda, passaðu þig þá alltaf á að bendirinn sé löglegur áður en þú notar hann. Frumstilltu benda sem 0 og settu gildið aftur á 0 þegar þú ert hættur að nota hann.
Ef þig vantar bók mæli ég með að þú fáir þér bara The C++ Programming Language, eftir Stroustrup. Kannski ekki besta bók fyrir byrjendur.. en samt klassík.
Matti<BR