- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Amlogic S905, S912 processzoros készülékek
- OLED TV topic
- Apple asztali gépek
- Melyik tápegységet vegyem?
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen alaplapot vegyek?
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- AMD Navi Radeon™ RX 9xxx sorozat
- Leállítja a legjobb CPU-hűtőinek szállítását az AMD
Új hozzászólás Aktív témák
-
zka67
őstag
válasz
Jester01 #5552 üzenetére
Szia,
Ezzel együtt az eredeti kiindulás az volt, hogy az & operátor nem egy számot ad vissza, hanem egy megfelelő típusú pointert. Emiatt aztán (int)&x + 1 és (int)(&x + 1) az nem ugyanaz (kivéve ha véletlenül x mérete 1 byte)
Mint említettem, fizikailag a pointer egy (memória)címet tartalmaz, ami egy egyszerű szám (ez lehet 16, 32 vagy akár 64 bites érték is, rendszertől függően, de ebbe most ne menjünk bele). A pointer típusát a fordító kezeli, magából a pointer értékéből ez nem derül ki, mivel nem tárolja azt.
Az eredeti kérdés az az volt, hogy a pointer elé miért nem kell a & jel, ezt próbáltam meg konyhanyelven elmagyarázni a kérdezőnek, hogy megértse.
int main(int argc, char* argv[])
{
char c;
char *p;
p = &c;
printf("sizeof(c)=%d, sizeof(p)=%d, p=%08X\r\n", sizeof(c), sizeof(p), p);
return 0;
}Ennek az eredménye az alábbi:
sizeof(c)=1, sizeof(p)=4, p=0018FF53azaz a c változó a 0x0018FF53-as memóriacímen található. Nincs a p változóban semmilyen típus, csak a változó címe.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Legjobb kijelzős! ThinkPad T14s Gen 2 i5-1135G7 16GB 256GB FHD - 400nit! magyarbill 1 év garancia
- BESZÁMÍTÁS! ASUS A620M R5 7500F 32GB DDR5 1TB SSD RTX 4070 SUPER 12GB Zalman M4 Corsair 650W
- Xiaomi Redmi 14C 128GB, Kártyafüggetlen, 1 Év Garanciával
- Huawei P20 64GB, Kártyafüggetlen, 1 Év Garanciával
- Gamer PC-Számítógép! Csere-Beszámítás! R5 3600 / GTX 1080 8GB / 32GB DDR4 / 512 SSD!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: FOTC
Város: Budapest