Kezdőoldal » Számítástechnika » Programozás » Ha egy 4 elemű tömbnek csak...

Ha egy 4 elemű tömbnek csak az első 3 elemébe teszek értéket, akkor az miért van, hogy a fordító véletlenszerűen a tömb típusát figyelembe véve tesz bele egy értéket a tömb 4 elemébe?

Figyelt kérdés

Példa:

unsigned short myArray[4] = {10,20,30};

A ki íratásnál megfigyelhetjük,hogy a tömb utolsó elemébe sosem kerül nagyobb vagy kisebb érték mint amit a tömb típusa tárolni tud.Ez miért van.És nektek is így működnek a tömbök vagy csak véletlen egybeesések sorozatát éltem át?

Nektek is komolyan véletlenszerűen kerül bele olyan érték amit a tömb tárolni tud?


2012. szept. 29. 00:48
 1/3 anonim ***** válasza:

Nem tesz bele semmit a fordító, egyszerűen csak kap egy memóriarészt, ami annyi byte, amibe belefér a 4 db short. A kapott memóriát nyilván egy másik program használta előtte, ami benne hagyta az értékeket, akármi is volt az. Ezért, hacsak nem írod felül valamivel, akkor az ott talált értéket fogja használni a programod.

Nincsenek véletlen egybeesések, van egy 2 byte-nyi adatod (általában ennyi a short), amiben teljesen véletlenszerű adat van (legalábbis a te szempontodból véletlen, egy másik programnak az hasznos adat volt), ami akármi lehet, mert mindenhogy ki lehet belőle olvasni egy számot.

2012. szept. 29. 01:42
Hasznos számodra ez a válasz?
 2/3 iostream ***** válasza:

Szabvány szerint, beépített típusnál a tömbelemek alapból inicializálatlanok, saját típusnál default-konstruáltak.

Ha írsz egy nem teljes inicializáló listát (nem teljes azt jelenti, hogy kevesebb elemet adsz meg, mint amilyen hosszú a tömb), akkor a maradék elemeket default konstruálja, beépített típusoknál.


Tehát neked minden esetben 0-t kéne kapnod a 4., hármas indexű elemre.


Amúgy ez nagyon durva:

"A ki íratásnál megfigyelhetjük,hogy a tömb utolsó elemébe sosem kerül nagyobb vagy kisebb érték mint amit a tömb típusa tárolni tud."

Komolyan az érződik, hogy nem érted ezt a dolgot. Amikor leírod azt, hogy myArray[3], akkor egy short méretű területet címzel meg, és shortként is kezeled. Hogy is lehetne azon a területen nagyobb (vagy kisebb, az ugyanazt jelenti kettes komplemensű ábrázolással) érték? Nem fér el, és ha el is férne, a típuskényszerítés miatt akkor is végbemenne a narrowing.

2012. szept. 29. 09:26
Hasznos számodra ez a válasz?
 3/3 anonim ***** válasza:
Memóriaszemétnek hívják, ezért is illik kinullázni a tömböt használat előtt. Egyes implementációk ki is nullázzák.
2012. szept. 29. 20:59
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!