Kezdőoldal » Számítástechnika » Programozás » Mire való a Pointer? (c++)

MARCEEEeee kérdése:

Mire való a Pointer? (c++)

Figyelt kérdés
c++ programozásban a pointereknél tartok és értem is mi a feladata, de mikor kerül arra sor hogy én használjam?

2021. nov. 25. 15:16
1 2
 1/12 anonim ***** válasza:
32%
Bármikor, amikor írsz egy programot, ami pointereket használ. Ha oop-s polimorfizmust használsz, akkor pl megkerülhetetlen.
2021. nov. 25. 15:31
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:
100%

"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

2021. nov. 25. 15:39
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:

#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";

2021. nov. 25. 15:46
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
82%

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. :)

2021. nov. 25. 16:00
Hasznos számodra ez a válasz?
 5/12 A kérdező kommentje:
Kezdem érteni.
2021. nov. 25. 16:39
 6/12 anonim ***** válasza:
Amint a stack nem eleg (jellemzoen nagyobb kodoknal), szukseged lesz pointerekre a heap miatt. Persze van kevesbe primitiv “dinamikus” pointer C++14 ota, aminel mar nem kell figyelni, hogy torlod-e vagy sem. Ez a std-ben a make_unique vagy make_shared.
2021. nov. 25. 17:39
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
30%

"Kezdem érteni."


Rosszul teszed.

2021. nov. 25. 17:53
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:
100%

#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.


[link]

2021. nov. 26. 11:15
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
#8 most már értem!
2021. nov. 26. 19:26
 10/12 anonim ***** válasza:
8: Na, ez már majdnem jó.
2021. nov. 26. 20:45
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!