Új hozzászólás Aktív témák
-
Karma
félisten
válasz
Sk8erPeter
#1412
üzenetére
"A double *ujtomb; sorban tehát deklarálunk egy pointerváltozót ujtomb néven, aminek csak később foglaljuk le a szükséges memóriát, először még csak meghatározzuk, hogy "lesz ilyen"."
Igen. Bár ha nagyon szőrözni akarnék, ahogy egyszer már tettem, a megfogalmazás nem tökéletes: magát a pointert sikeresen definiáltuk, 4 byte-ot kapott a stacken (vagy globálisan), mint egy átlagos változó. De ezt most felejtsük el egy pillanatra, mert irreleváns.
"Amikor megtudtuk az eredeti tömb számunkra szükséges elemeit megszámolva, mekkora új tömbre van szükségünk, azután lefoglaltuk neki a számára szükséges memóriát. Ezután tömbként és egyben pointerként használtuk fel a későbbiekben, rakosgattunk bele elemeket, és itt ez most kicsit zavaros számomra, hogy akkor most melyik fogalmat is használjuk, ami helytálló. Mert tömbnek foglalunk helyet, de pointertömb...
"Nem, mi csak és kizárólag pointerként használtuk, nincs külön olyan, hogy "tömbként" használni. Ez a szép a C-ben (konkrét és ironikus értelemben is), hogy ilyen egyszerű
Mint írtam korábban, a p[n] subscript operátor az ekvivalens a *(p+n) művelettel.A pointertömb egy teljesen más fogalom. Pl. int **valami; egy int pointerre mutató pointer, amivel (hasonlóan a második példakódhoz) tömbök tömbjét lehet megvalósítani. Ugyanezt lehet fix méretben is: int valami[5][2];.
"Ráadásul - bocsi az értetlenkedésért, csak vannak ilyen homályos pontok - akkor a memóriafoglalással ezek szerint nem "méretezünk", hanem nem tudom, mit csinálunk
"A memóriafoglalással memóriát foglalunk

"És még egy pluszkérdés: a main()-ben free-vel felszabadítjuk a memóriát, de ekkor nem "szabadulunk meg" egyben az adatszerkezet már korábban eltárolt értékeitől is?"
Dehogynem. Amire meghívod a free-t, az felszabadul, az értékei érvénytelenné és elérhetetlenné válnak. (Legalábbis így kell bánni vele, ha nem akarsz bugzani.)
Fontos megjegyezni, hogy egy dinamikus pointertömbnél az alstruktúrákat egyesével fel kell szabadítani, a fordító nem fogja kibogozni!
Ú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!
- Autós topik látogatók beszélgetős, offolós topikja
- Vivo X300 Pro – messzebbre lát, mint ameddig bírja
- PlayStation 1 / 2
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- A NAND helyett a DRAM lesz a Samsung aranybányája
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- exHWSW - Értünk mindenhez IS
- Nem indul és mi a baja a gépemnek topik
- Hisense LCD és LED TV-k
- Házimozi belépő szinten
- További aktív témák...
- Lenovo ThinkCentre M70s Small Form Factor Business Desktop, 14th Gen Intel 10-Core i5-14400
- 1db DELL P2421 + 1db P2423 1920x1200 IPS monitor, állítható magasság PIVOT is, 16:10 képarány!
- AKCIÓ!! Alienware m16 r1 AMD Laptop , RTX 4080 , R9 7845HX , 32GB DDR5 , 2TB
- GIGABYTE AORUS Radeon RX 580 8GB - MINDEN TARTOZÉKÁVAL.
- GYÖNYÖRŰ 286 Számítógép
- GYÖNYÖRŰ iPhone 13 mini 256GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3310, 100% Akksi
- AKCIÓ! LG 24GM79G-B 24 144Hz FHD TN 1ms monitor garanciával hibátlan működéssel
- Bomba ár! Lenovo ThinkPad X390: i5-G8 I 8GB I 256SSD I 13,3" HD I HDMI I Cam I W11 I Gari!
- Google Pixel 10 Pro XL Moonstone Super Actua 120 Hz, Pro kamera 5 zoom 256 GB Használt,Gari
- Lenovo magyar laptop billentyűzetre van szükséged? Akármelyik verzióban segítünk!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
"
Mint írtam korábban, a p[n] subscript operátor az ekvivalens a *(p+n) művelettel.
"
