Mire való a Pointer? (c++)
"Mire való a Pointer?"
Pointálásra.
Ha átvesz egy függvény egy intet paraméterként akkor annak az értékét csak lokálisan tudod módosítani. Ha int* kap egy függvény akkor tudja módosítani azt az intet amire a pointer mutat. C++ ban erre a konkrét esetre inkább referencát érdemes használni de mondjuk C ben ahol nincs referencia ott lehet használni pointert. A háttérben a referencia is pointerrel működik csak egy kicsit hülyebiztosabb.
"de mikor kerül arra sor hogy én használjam?" az rajtad múlik
#2 vagyok, itt egy példa:
#include <iostream>
using namespace std;
void foo(int a){ ++a; };
void bar(int* a){ ++(*a); };
//main:
int val = 5;
foo(val);
cout << val << "\n";
bar(&val);
cout << val << "\n";
Fenti válaszok jók. Én kicsit máshogy közelíteném meg, azaz konyha nyelven.
Van egy whiteboard táblád, amire tudsz filccel írni. Mondjuk egy 10x10-es tömböt töltesz ki, akkor helyben tudod hova kell írni az adott értéket. pl.: 3. sor 4. oszlopba kerül mondjuk egy 20-as érték.
De ha 8m-re vagy a táblától, és más fogja a filcet, akkor neked "koordinátát" kell mondani, hogy "hova" írd az adatot. (Vagy honnan olvasd). Ez a pointer. Rámutatsz egy helyre. Így a pointer "másolása", nem hoz létre ÚJ adatot, mert csak egy koordinátát közölsz. Tehát az így használt adat VÁLTOZHAT, ha más írja mielőtt te kiolvasnád azt.
Míg az előző megközelítés a hívás stackbe helyezi el az adatot, és igen létrehoz új adatot! Függvényből való kilépéssel (ahol definiáltad) az is törlődik.
E fényében tekints a fentiekre. :)
"Kezdem érteni."
Rosszul teszed.
#4:
a te példád elég katyvasz ahhoz képest, hogy te "konyhanyelven" akartad megfogalmazni
azért konyhanyelven nincs tömb és társai :D
Kérdező van egy "mydata" változód ami adatot tárol.
Ennek ugye van egy értéke amit le tudsz kérdezni és beállítani is (ha nem konstans, de ezt most hagyjuk).
Mellette a háttérben ez ugye tárolódik valahol a memóriában aminek van egy helye! A pointer ezt a helyet tárolja el valójában és amikor te a pointeren keresztül állítod az értéket, akkor azt az értéket módosítod és kérdezed le ahova a pointer mutat.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!