Kezdőoldal » Számítástechnika » Programozás » Hogyan lehet egy tömb elemeit...

Qaxqaxqax kérdése:

Hogyan lehet egy tömb elemeit lekérdezni Cben?

Figyelt kérdés

A történet az, hogy nemrég kezdtem el ezt a nyelvet c++, Java... stb ismeretekkel, de valamiért úgy érzem hogy ennek a nyelvnek kicsit lyukas a története. Elég sok dolog hibádzik amikre a megoldás elég körülményes, de gondoltam letudom mert muszáj, de ha már egy tömb méretét se lehet lekérdezni benne akkor kész. próbáltam sizeof()-al de egy 5 elemű tömbnél 19elemet futtatott végig a cikluson és nem értem miért. Tudna valaki segíteni, hogy pl az int szamok[5]; tömb elemeinek számát milyen függvényel tudnám lekérdezni? És esetleg akkor már idecsapom azt a kérdést is ha már nem túl távoli a dolog, hogy pl egy olyan stringet, mint a char string[]="alma es korte"; karaktereinek dbszámát lekérdező függvény van e?

A válaszokat előre is köszi 33



#méret #alma #string #tömb mérete
2014. szept. 13. 21:19
 1/9 anonim ***** válasza:
100%
A sizeof() a típus/tömb/osztály/etc memóriában elfoglalt méretét adja meg byte-ban. A tömböd 5 elemű, ez a definíciónál már ki is derül.
2014. szept. 13. 21:24
Hasznos számodra ez a válasz?
 2/9 anonim ***** válasza:
A karaktertömbödre pedig a strlen lesz a megoldás.
2014. szept. 13. 21:26
Hasznos számodra ez a válasz?
 3/9 SimkoL ***** válasza:
100%
meret = sizeof(tomb) / sizeof(tomb[0]);
2014. szept. 13. 21:35
Hasznos számodra ez a válasz?
 4/9 Tengor ***** válasza:
100%

A sizeof() bájtokban adja meg a lefoglalt memória méretet. Egy int 4 bájtos (32 bites), így az 5 elemű tömbre 20-at mondott neked (valójában 20 elemet futtattál le, 0-tól 19-ig).


Meglátásom szerint az alap tudásodban vannak a lyukak és emiatt gondolod, hogy a nyelvvel van a probléma.

Elég sok minden épül C-re, és azok többnyire jól is működnek. Persze érteni kell hozzá.

2014. szept. 13. 21:49
Hasznos számodra ez a válasz?
 5/9 anonim ***** válasza:

C-ben nincs lehetőséged lekézdezni egy tömb méretét - de erre nincs is szükség, hiszen te hoztad létre - a méret ismeretében. Ezért, amikor függvénynek adsz át végjelmentes tömböt, a méretét is át kell adni.


Az "alma es korte" literál mérete 14 bájt, mert a stringet lezáró nulla ('\0') is szükséges. Ezt keresi meg az strlen függvény (és az összes többi string függvény is).

2014. szept. 13. 21:54
Hasznos számodra ez a válasz?
 6/9 A kérdező kommentje:
Köszönöm a válaszokat, mindenki kap tőlem egy 100ast.
2014. szept. 14. 01:19
 7/9 anonim ***** válasza:

A C nagyon alacsony szintű nyelv, úgyhogy készülj fel, hogy vért fogsz izzadni, főleg egy Java után.

Ha nem beágyazott rendszerekről van szó (ami nem ismer más nyelvet), vagy nem fontos a nagyon optimalizált kód, akkor nem is érdemes használni.

2014. szept. 14. 16:26
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:

Ahogy az előttem szóló is mondta a C nagyon alacsony szintű nyelv.


Java-ban azért tudod lekérdezni egy tömb méretét mert az Array objektum tárolja azt, külön privát változóban. Ez egy teljesen más szemléletmód, a Java egy komoly szerszám nagy munkákra, ahol nem érdekel mi van a memóriában. A C pedig rendszer-közeli nyelv, azért várja el, hogy tisztában legyél a memóriád állapotával mert feltételezi, hogy valóban arra akarod használni amire való. C-ben nagyon komoly dolgokat meg lehet csinálni, drivereket és erőforrás takarékos alrendszereket, beágyazott rendszereket, firmware-eket lehet írni benne. Mint mindenhez ehhez is érteni kell.


Java után természetes, hogy nehézkesnek tűnik a C, de ne felejtsd el, hogy ez a szerszám egy másik munkára való, mint amire te használni szeretnéd.


> de gondoltam letudom mert muszáj


Meghalni muszáj. ha azért tanulod, hogy beírhasd a CV-dbe, akkor felesleges időpazarlás, ahol nem kel foglalkoznod vele, ott nem fogják nézni, ahol meg igen, ott nem lesz elég ha csak "letudod".

2014. szept. 15. 10:16
Hasznos számodra ez a válasz?
 9/9 iostream ***** válasza:

"C-ben nincs lehetőséged lekézdezni egy tömb méretét"


Dehát... pont erről szól a kérdés, hogy de. Mi az istenről beszélsz? Ja, hogy szerinted a pointer is tömb, és a tömb is pointer, tehát hamut mamuval keversz.

2014. szept. 15. 18:04
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!