Hirdetés
- Kényszerűen visszavesz az AI-ból a Windows 11-ben a Microsoft?
- Hazavágná a HBM jövőjét az AI-piacon az Intel és a Saimemory új egyezménye
- Új Xeonokkal szorongatná meg az Intel az AMD-t
- Névteleníti a Panther Lake IGP-jét az Intel, ha nem gyors a memória mellette
- Mindent a látványért: DeepCool CG380 3F gépház tesztje
- Apple asztali gépek
- Elképesztő lemaradásban van az aktuális Loongson CPU-család
- RAM topik
- Így építs kiegyensúlyozott gamer PC-t – CPU, GPU és FPS viszonya
- TCL LCD és LED TV-k
- 5.1, 7.1 és gamer fejhallgatók
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Kényszerűen visszavesz az AI-ból a Windows 11-ben a Microsoft?
- OLED TV topic
- Névteleníti a Panther Lake IGP-jét az Intel, ha nem gyors a memória mellette
- mefistofeles: Az elhízás nem akaratgyengeség!
- Luck Dragon: Asszociációs játék. :)
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- Sapphi: StremHU | Source – Self-hostolható Stremio addon magyar trackerekhez
Új hozzászólás Aktív témák
-
kovisoft
őstag
válasz
borisz1994
#6057
üzenetére
A többiek már leírták, hogy alapvetően jól fogalmaztad meg a deklaráció és definíció közötti különbséget, de a változóval kapcsolatos következtetésed nem helyes.A példádban az
int pelda=0;
és azint pelda;
egyaránt definíció, mindkettő lefoglal a változónak memóriát, a különbség köztük annyi, hogy az első ad is egy 0 kezdőértéket a változónak. Ennek a változónak a deklarációja ez lenne:extern int pelda;
Ez nem foglal le memóriát a változónak, csak annyit mond, hogy valahol máshol van definiálva egy pelda nevű változó, aminek int a típusa. A deklaráció tehát ahhoz kell, hogy az adott helyen tudj használni egy változót vagy függvényt, de valahol máshol kell majd definiálnod is azt. -
válasz
borisz1994
#6057
üzenetére
Benkő Tiborné - Benkő László - Tóth Bertalan : Programozzunk C nyelven! könyvet
Jézusmária

Inkább keress egy jó, érthető könyvet. Szerintem a klasszikus Kernighan-Ritchie "A C programozási nyelv" az elég jó (még ha az apád is lehetne
), én annak idején abból tanultam.Egyébként alapvetően megéretetted: a definíció az egy valaminek (változónak, függvénynek) a pontos leírása és ennek hatására a fordító meg is csinálja az ahhoz tartozó dolgokat (memóriát foglal a változónak, lefordítja a függvény kódját).
A deklaráció meg elmondja a fordítónak, hogy van itt ez az izé és ez tulajdonképpen ilyen típusú, de valahol máshol van leírva.Hogy mire jó?
Azt talán már tudod, hogy a C erősen típusos nyelv, vagyis a fordító mindig megnézi, hogy az a függvény vagy változó, amire hivatkozol, milyen típusú, mennyi és milyen típusú paramétere van - ha pedig olyasmire hivatkozol, amiről még nem hallott, akkor hibát dob.
Amíg az egész programod egy file-ban van, ez általában nem jelent áthidalhatatlan problémát, olyan sorrendbe rakod a definícókat, hogy ha B hivatkozik A-ra, akkor A előbb legyen a file-ban, mint B. De már itt is lehet komplikáció, hiszen mi van, ha az A függvény hívja a B-t a B meg az A-t? Ilyenkor jön jól a deklaráció, hogy az ember leírja a fordítónak, hogy "majd találsz egy B függvényt, ami így fog kinézni, hogy". Ettől a fordító megnyugszik és szépen lefordítja a dolgokat, ha az ellenőrzéseken amúgy átmegy (és majd a linker lesz az, aki kétségbeesik, ha a B definíciója nincs sehol
) -
buherton
őstag
válasz
borisz1994
#6057
üzenetére
Nem egészen. Vagyis hát nem olyan triviális. Főleg a változóknál.
A deklaráció a fordítónak szól, vagyis ez ahhoz kell, hogy a fordító értelmezni tudja a leírtakat, de nincs közvetlen hatása a processzoron futó kódra. Azaz meg lehet írni a programot ezek nélkül, csak olvashatatlan lesz. A definíció a processzornak szól és enélkül nem futna úgy a programunk, ahogy szeretnék.
Kezdjük az egyszerűbbel a függvénnyel.
Ezek deklarációk:
extern void foo(void);static int foo(int);void foo(void);bar(); // ez most nem függvényhívás, és ez most nagyon gonosz dolog tőlem
A fordítónak ezekkel jelzed, hogy ha talál egy ilyen szignatúrájú függvényhívást, amihez még nem találta meg a definíciót, akkor ne hasaljon el és a keywordnek megfelelően járjon el.Ezek definíciók:
void foo(void){}static int foo(int){return 0;}bar(){return 0;}
Leírod, hogy mit csinál a függvény. Ezzel mondod meg, hogy mit csináljon a programod.Változók.
Ez deklaráció (nem is tudok többet ennél):
extern int;
Ugyanaz, mint a függvénynél.Ezek definíciók:
int foo;static char foo;
Ugyanaz, mint a függvénynél.Egyébként igen, a deklaráció nem jár memóriafoglalással, a definíció jár. Viszont a deklaráció csak a láthatóságot növeli, semmi más plusz dolgot nem tud, nem befolyásolja a típust, élettartamot és a tárolási osztályt sem.
Az
intmérete architektúra függő és alimits.h-ban van meg a "mérete". Tipikusan 4 bájt. Ha jól emlékszem, akkor az AVR8 esetén 2 bájt méretűek.
Ú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!
- One mobilszolgáltatások
- Apple asztali gépek
- Óra topik
- mefistofeles: Az elhízás nem akaratgyengeség!
- Debrecen és környéke adok-veszek-beszélgetek
- Elképesztő lemaradásban van az aktuális Loongson CPU-család
- Gyúrósok ide!
- Amazfit Active 2 NFC - jó kör
- Székesfehérvár és környéke adok-veszek-beszélgetek
- exHWSW - Értünk mindenhez IS
- További aktív témák...
- Nitro V 16 AI ANV16-42 16" FHD+ IPS Ryzen 7 260 RTX 5060 16GB 512GB NVMe magyar vbill új akku gar
- Panasonic Lumix G9II váz
- Nintendo Switch Kollekció
- Apple iPhone 17 256GB Sage használt újszerű 100% akku 32 ciklus Apple garancia 2027.01.06-ig
- Bomba ár! Asus ZenBook UX433FN - i7 I 16GB I 512SSD I HDMI I 14" FHD I Nvidia I Cam I W11 I Gari!
- ÁRGARANCIA!Épített KomPhone i9 14900KF 64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Bomba ár! Asus ZenBook UX433FN - i7 I 16GB I 512SSD I HDMI I 14" FHD I Nvidia I Cam I W11 I Gari!
- Amazfit GTR Mini okos óra
- Sosemhasznált! HP OmniBook 5 Flip i5-1334U 8GB 512GB 14" FHD+ áthajtós-érintős Gar.: 1 év
- Vállalom FRP Lock os telefonok javítását ingyen kiszálással és akár helyszíni javittással
Állásajánlatok
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

), én annak idején abból tanultam.


