Kezdőoldal » Számítástechnika » Programozás » C-ben egy pointer nem hordozza...

C-ben egy pointer nem hordozza azt az információt, hogy az egy változóra mutat, vagy egy tömb első elemére?

Figyelt kérdés
2020. jan. 28. 21:24
 1/9 anonim ***** válasza:
Ha jól értem, csak rámutat az adott memóriaterületre, tehát adott memóriacímet tartalmaz, tehát nem.
2020. jan. 28. 21:35
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
74%
A normál pointer c++ nyelvben sem tudja tárolni. Az csak egy memóriacím, ennyi fér bele a 32/64 bitbe.
2020. jan. 28. 21:40
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
74%
Nem bizony.
2020. jan. 28. 22:47
Hasznos számodra ez a válasz?
 4/9 anonim ***** válasza:
53%
Alapvetően nem hordozza, a memóriában mindkettő egy egyszerű pointerként jelenik meg, a fordító tudja, hogy pointer, vagy tömb, és annak megfelelően kezeli.
2020. jan. 29. 12:10
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:
11%
#4: bullshit.
2020. jan. 29. 12:34
Hasznos számodra ez a válasz?
 6/9 anonim ***** válasza:

#4: a fordító sehogy nem kezeli, csak a programozó.

És nem, nem is szól róla warning formájában, mert sokszor ez az elvárt működés.

2020. jan. 29. 21:48
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:
#6 Némiképp általánosan fogalmaztam azzal, hogy 'kezeli', de a fordító (értelemszerűen) megkülönbözteti a tömböket a mezei pointerektől. Ezért működik például a sizeof() függvény úgy, ahogy, mert fordítási időben tisztában van a fordító azzal, hogy pontosan mi van ott, és ezért nem tudsz például egy tömb típusú változónak pointert értékül adni. Bármennyire is hasonlít a kettő, a fordító igenis különbséget tesz közöttük, még ha minimálisan is.
2020. jan. 29. 23:19
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

A helyzet az, hogy a fordító is csak azt tartja számon, hogy mennyi memória lett lefoglalva a mutatott helyen. De hogy az pl. négy char elemű tömb vagy egy int, azt nem tudja.

A sizeof() is bájtban adja vissza a tömb méretét, ahogy bármilyen más típus méretét is.

2020. jan. 30. 10:12
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:

Helyesbítek: Valóban tudja, hogy tömb-e, de nem a sizeof miatt.


char a[]={1,2,3,4};

char *p;

p=&a; // <- hibás !


A lényeg most a hibaüzenetben van:

warning: assignment to ‘char *’ from incompatible pointer type ‘char (*)[4]’

-> char (*)[4]

De ez csak az "eredeti" pointer szimbólumra (névre) igaz.

2020. jan. 30. 12:55
Hasznos számodra ez a válasz?

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!