- Macrodroid
- Új telefont és tabletet mutatott be a Telekom
- Xiaomi 14 - párátlanul jó lehetne
- Szuper Szigettel futott be a HyperOS 3
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- iPhone topik
- Google Pixel topik
- Elalmásodik a Xiaomi: 100 wattos töltéssel érkezik a 16 Pro Max
- One mobilszolgáltatások
Új hozzászólás Aktív témák
-
modder
aktív tag
szerintem átrendezted a kódot ahhoz képest, ahogy a hibaüzenetek állapotában volt
Egyik dolog:
adatok uzenetek[uzszam]=elso();
[...]
adatok elso() { ... }az elso() egy darab elemet ad vissza, míg az uzenetek egy tömb.
Nagyobb gond, hogy ha az elso() még tömböt is adna vissza valamilyen csoda folytán, akkor sem inicializálhatnád így az uzenetek változót. Ha inicializálni akarnád, akkor:
adatok uzenetek[uzszam] = {adat1, adat2, adat3, adat_uzszam-1}Miért?
- Mert fordítási időben tudni kell a tömb méretét, ha inicializálni is akarod deklarálásnál!
- Mert nem lehet egész tömböket másolni az értékadás operátorral. Tömb másolása vagy memcopy() fv. vagy for-ciklussal lehetséges. Általában az utóbbit használjuk.Ha belegondolsz, hogy az adatok uzenetek[uzszam] egy sizeof(adatok)*uzszam hosszú memóriaterület, rájössz, hogy az értékadásnak egy ilyen hosszú memóriaterületet kéne átmásolni úgy, mint a memcpy() fv. Ez túl sok hibához vezetne valószínűleg ezért nincs benne.
Másik dolog:
adatok[] elso() { ... return uzenetek2; }sem működik. Nem tudom tanultad-e hogyan működik a függvényhívás és mi a stack. Amikor hívsz egy függvényt, akkor a függvény visszatérési típusának megfelelő méretű memória területet szabadon hagy a stacken fv hívása előtt, visszatéréskor ide másolja a visszatérési értéket. Ehhez tudni kell a visszatérési érték pontos hosszát.
Ezért nem térhetsz vissza tömbbel, mert annak nem tudod az egzakt hosszát futásidőben.Visszatérhetnél pointer típussal:
adatok* elso() {... return &uzenetek2; }Ezzel már csak az a baj, hogy a mód, ahogyan uzenetek2-t deklaráltad, az a stacken jött létre, és megszűnik létezni, miután a függvény visszatért, ezért ha visszatérés után hivatkoznál rá, memóriaszemétre mutatna. (new-val lehetne a heap-en foglalni, de most ez nem kell)
Megoldás:
adatok uzenetek[uzszam];
elso(uzenetek, uzszam);
void elso(adatok[] uzenetek, uzszam) { beolvasol az uzenetekbe }Amint látod a függvényargumentumokat lehet visszatérési értékek tárolására is használni. Tömb esetében ez ilyen egyszerű. Ha nem tömböt használsz, akkor referenciát kell átadni:
void valami(adat& uzenet) { uzenet = createUzenet(); }Ez teljesen elfogadott, hogy lefoglalod a memóriaterületet a tömbnek először, és ezt adod át a függvénynek, hogy feltöltse adatokkal.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Autóápolás, karbantartás, fényezés
- Windows 11
- Premier előzetesen a METAL GEAR SOLID Δ: SNAKE EATER
- Proxmox VE
- Sgr_A: Számítógépeim aktualizálása cseréje
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Garancia kérdés, fogyasztóvédelem
- Macrodroid
- Új telefont és tabletet mutatott be a Telekom
- További aktív témák...
- AM5 Gamer PC - Ryzen 5 8400F / RX 9060 XT / A620M / 16GB vagy 32GB DDR5 RAM / 256GB M.2+1TB M.2 SSD
- Új Lenovo ideapad Slim 5i Multimédiás Laptop -35% 16" Brutál i5-1245U 10Mag 16/1TB IPS FHD+
- Asus Zenbook Pro 15 i7 7700HQ/1050ti 4GB/16GB RAM/100% sRGB
- Xiaomi Redmi Note 14 Pro 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 13 256GB, Kártyafüggetlen, 1 Év Garanciával
- GYÖNYÖRŰ iPhone 13 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3343
- Creative Sound BlasterX G6 7.1 USB külső hangkártya
- Bomba ár! Lenovo ThinkPad P53s - i7-8GEN I 16GB I 256SSD I Nvidia I 15,6" FHD I W11 I Cam I Gari!
- Bomba ár! Dell Latitude E6520 - i5-2GEN I 6GB I 320GB I HDMI I 15,6" HD+ I W10 I Gari!
- Szép állapotban levő Apple iPhone 15 256GB / 12 hó jótállás
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest