Óbudai Egyetem. C programozási nyelv

Hasonló dokumentumok
C programozási nyelv

Programozás I gyakorlat

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Bevezetés, a C++ osztályok. Pere László

Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

Pénzügyi algoritmusok

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

C programozási nyelv Pointerek, tömbök, pointer aritmetika

5. Gyakorlat. struct diak {

OOP #14 (referencia-elv)

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Információs Technológia

Java II. I A Java programozási nyelv alapelemei

Programozas 1. Strukturak, mutatok

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Java II. I A Java programozási nyelv alapelemei

C programozási nyelv

Programozás C és C++ -ban

Pénzügyi algoritmusok

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

Például számokból álló, egyszeresen láncolt lista felépítéséhez az alábbi struktúra definíciót használhatjuk:

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

A programozás alapjai 1 Rekurzió

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Programozás alapjai. 5. előadás

OOP. Alapelvek Elek Tibor

Nagy HF u tmutato 2011/2012 II. fe le v

Programozás alapjai. 10. előadás

C++ programozási nyelv Konstruktorok-destruktorok

Programozás 5. Dr. Iványi Péter

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

Óbudai Egyetem. C programozási nyelv

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

C++ programozási nyelv

Láncolt lista. az itt adott nevet csak a struct deklaráción belül használjuk

Programozás C++ -ban

malloc free malloc free int sum(int a[4]) { return a[0] + a[1] + a[2] + a[3]; }

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

A C programozási nyelv IV. Deklaráció és definíció

C++ programozási nyelv Struktúrák a C++ nyelvben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

FUNKCIONÁLIS PROGRAMOZÁS

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

Típusok és konstansok

Bevezetés a C++ programozási nyelvbe

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

7. fejezet: Mutatók és tömbök

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Számítógép és programozás 2

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

C++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

C++ programozási nyelv

Az AVR programozás alapjai. Előadja: Both Tamás

Programozás alapjai 6. előadás. Wagner György Általános Informatikai Tanszék

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

A C programozási nyelv III. Pointerek és tömbök.

100% BIO Natur/Bio kozmetikumok és testápolás

Programozás II. 2. Dr. Iványi Péter

Programozás alapjai 1. (BMEVIEEA100)

ELTE SAP Excellence Center Oktatóanyag 1

A C programozási nyelv III. Pointerek és tömbök.

Hatékony memóriakezelési technikák. Smidla József Operációkutatási Laboratórium január 16.

2018, Funkcionális programozás

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

Operációs rendszerek. 6. gyakorlat: Processzusok közti kommunikáció (osztott memória, üzenetsor)

Programozási nyelvek Java

Virtuális függvények (late binding)

Feladat: Hogyan tudunk létrehozni egy olyan vector nevű tömb típust, amely egy háromdimenziós térbeli vektort reprezentál?

Információs Technológia

8. gyakorlat Pointerek, dinamikus memóriakezelés

Occam 1. Készítette: Szabó Éva

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Adatszerkezetek 1. Dr. Iványi Péter

Cekla. Készítette Doxygen Tue Sep :13:44

Algoritmizálás + kódolás C++ nyelven és Pascalban

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

C++ programozási nyelv

Készítette: Nagy Tibor István

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Java programozási nyelv 4. rész Osztályok II.

Bevezetés a programozásba Előadás: A const

Átírás:

Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási nyelv Struktúrák és Unionok Dr. Schuster György 2016. október 6. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 1 / 11

Struktúrák Struktúrák A struktúra egy olyan összetett adatszerkezet, amely nemcsak azonos típusú elemeket rendelhet össze. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 2 / 11

Struktúrák Struktúrák A struktúra egy olyan összetett adatszerkezet, amely nemcsak azonos típusú elemeket rendelhet össze. A struktúra definíciójában leírjuk, hogy a struktúra hogyan épül fel. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 2 / 11

Struktúrák Struktúrák A struktúra egy olyan összetett adatszerkezet, amely nemcsak azonos típusú elemeket rendelhet össze. A struktúra definíciójában leírjuk, hogy a struktúra hogyan épül fel. Például: struct ember char nev[80]; unsigned kor; float suly; Definiáltunk egy olyan elemet, amely egyben tartalmazza egy egyén adatait. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 2 / 11

Struktúrák Struktúrák A struktúra egy olyan összetett adatszerkezet, amely nemcsak azonos típusú elemeket rendelhet össze. A struktúra definíciójában leírjuk, hogy a struktúra hogyan épül fel. Például: struct ember char nev[80]; unsigned kor; float suly; A deklarációnál egy adott példányt hozunk létre. Definiáltunk egy olyan elemet, amely egyben tartalmazza egy egyén adatait. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 2 / 11

Struktúrák Struktúrák A struktúra egy olyan összetett adatszerkezet, amely nemcsak azonos típusú elemeket rendelhet össze. A struktúra definíciójában leírjuk, hogy a struktúra hogyan épül fel. Például: struct ember char nev[80]; unsigned kor; float suly; Definiáltunk egy olyan elemet, amely egyben tartalmazza egy egyén adatait. A deklarációnál egy adott példányt hozunk létre. Példa: Józsi (jozsi) már egy struct ember jozsi; konkrét személy. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 2 / 11

Struktúrák Mezőhozzáférés közvetlen és indirekt Egy struktúra példány adott mezőjéhez a mezőhozzáférés operátor. segítségével férünk hozzá. jozsi.kor=43; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 3 / 11

Struktúrák Mezőhozzáférés közvetlen és indirekt Egy struktúra példány adott mezőjéhez a mezőhozzáférés operátor. segítségével férünk hozzá. jozsi.kor=43; Vagyis a jozsi példány kor mezője legyen egyenlő 43-al. Ezután úgy használjuk, mint egy normális változót. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 3 / 11

Struktúrák Mezőhozzáférés közvetlen és indirekt Egy struktúra példány adott mezőjéhez a mezőhozzáférés operátor. segítségével férünk hozzá. jozsi.kor=43; Vagyis a jozsi példány kor mezője legyen egyenlő 43-al. Ezután úgy használjuk, mint egy normális változót. Ha nem a példány neve, hanem a címe van megadva... struct ember jozsi; struct ember *jp;. jp=&jozsi;. jp->kor=43; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 3 / 11

Struktúrák Mezőhozzáférés közvetlen és indirekt Egy struktúra példány adott mezőjéhez a mezőhozzáférés operátor. segítségével férünk hozzá. jozsi.kor=43; Vagyis a jozsi példány kor mezője legyen egyenlő 43-al. Ezután úgy használjuk, mint egy normális változót. Ha nem a példány neve, hanem a címe van megadva... struct ember jozsi; struct ember *jp;. jp=&jozsi;. jp->kor=43; Szó szerint! A jp által megcímzett struktúra kor mezője legyen egyenlő 43-al. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 3 / 11

Rekurzív struktúra Struktúrák Kérdés: mit tartalmazhat egy struktúra? Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 4 / 11

Rekurzív struktúra Struktúrák Kérdés: mit tartalmazhat egy struktúra? Válasz: bármilyen adatelemet, de nem tartalmazhat olyan struktúrát, mint önmaga, se közvetlenül se közvetetten. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 4 / 11

Rekurzív struktúra Struktúrák Kérdés: mit tartalmazhat egy struktúra? Válasz: bármilyen adatelemet, de nem tartalmazhat olyan struktúrát, mint önmaga, se közvetlenül se közvetetten. Viszont tartalmazhat olyan típusú pointert, mint önmaga. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 4 / 11

Rekurzív struktúra Struktúrák Kérdés: mit tartalmazhat egy struktúra? Válasz: bármilyen adatelemet, de nem tartalmazhat olyan struktúrát, mint önmaga, se közvetlenül se közvetetten. Viszont tartalmazhat olyan típusú pointert, mint önmaga. Ilyen jellegű alkalmazás az úgynevezett lista adatszekezet. Egy ilyen struktúra definíciója: struct LIST int v; struct LIST *next; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 4 / 11

Rekurzív struktúra Struktúrák Kérdés: mit tartalmazhat egy struktúra? Válasz: bármilyen adatelemet, de nem tartalmazhat olyan struktúrát, mint önmaga, se közvetlenül se közvetetten. Viszont tartalmazhat olyan típusú pointert, mint önmaga. Ilyen jellegű alkalmazás az úgynevezett lista adatszekezet. Egy ilyen struktúra definíciója: struct LIST int v; struct LIST *next; A v az adatelem, a next az a pointer, amely a következő elemre mutat. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 4 / 11

Rekurzív struktúra Struktúrák Kérdés: mit tartalmazhat egy struktúra? Válasz: bármilyen adatelemet, de nem tartalmazhat olyan struktúrát, mint önmaga, se közvetlenül se közvetetten. Viszont tartalmazhat olyan típusú pointert, mint önmaga. Ilyen jellegű alkalmazás az úgynevezett lista adatszekezet. Egy ilyen struktúra definíciója: struct LIST int v; struct LIST *next; A v az adatelem, a next az a pointer, amely a következő elemre mutat. Valahogy így. NULL Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 4 / 11

Struktúrák Típusként definiált struktúra A struktúrákat a typedef utasítással is definíálhatjuk. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 5 / 11

Struktúrák Típusként definiált struktúra A struktúrákat a typedef utasítással is definíálhatjuk. Példa: typedef struct char nev[80]; unsigned kor; float suly; } ember; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 5 / 11

Struktúrák Típusként definiált struktúra A struktúrákat a typedef utasítással is definíálhatjuk. Példa: typedef struct char nev[80]; unsigned kor; float suly; } ember; Ettől kezdve van egy ember típusunk. Láthatjuk, hogy a mezők azonosak az előzőekben hagyományos módon definiált struktúránál. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 5 / 11

Struktúrák Típusként definiált struktúra A struktúrákat a typedef utasítással is definíálhatjuk. Példa: typedef struct char nev[80]; unsigned kor; float suly; } ember; A deklaráció egyszerűsödik. ember jozsi; Ettől kezdve van egy ember típusunk. Láthatjuk, hogy a mezők azonosak az előzőekben hagyományos módon definiált struktúránál. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 5 / 11

Struktúrák Típusként definiált struktúra A struktúrákat a typedef utasítással is definíálhatjuk. Példa: typedef struct char nev[80]; unsigned kor; float suly; } ember; Ettől kezdve van egy ember típusunk. Láthatjuk, hogy a mezők azonosak az előzőekben hagyományos módon definiált struktúránál. A deklaráció egyszerűsödik. ember jozsi; A struct kulcsszó elmaradt. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 5 / 11

Struktúrák Típusként definiált struktúra A struktúrákat a typedef utasítással is definíálhatjuk. Példa: typedef struct char nev[80]; unsigned kor; float suly; } ember; Ettől kezdve van egy ember típusunk. Láthatjuk, hogy a mezők azonosak az előzőekben hagyományos módon definiált struktúránál. A deklaráció egyszerűsödik. ember jozsi; A struct kulcsszó elmaradt. Nem lehetséges rekurzív struktúrát definiálni ezen a módon! Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 5 / 11

Struktúrák Típusként definiált struktúra A struktúrákat a typedef utasítással is definíálhatjuk. Példa: typedef struct char nev[80]; unsigned kor; float suly; } ember; Ettől kezdve van egy ember típusunk. Láthatjuk, hogy a mezők azonosak az előzőekben hagyományos módon definiált struktúránál. A deklaráció egyszerűsödik. ember jozsi; A struct kulcsszó elmaradt. Nem lehetséges rekurzív struktúrát definiálni ezen a módon! Miért? A típus a struktúra után derül ki. Amúgy minden más azonos. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 5 / 11

Bitmezők Struktúrák Egész jellegű változók esetén definiálhatók az un. bitmezők. Összehasonlító példa: struct chr unsigned x; unsigned y; char code; Ez minimum 9 bájt. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 6 / 11

Bitmezők Struktúrák Egész jellegű változók esetén definiálhatók az un. bitmezők. Összehasonlító példa: struct chr unsigned x; unsigned y; char code; Ez minimum 9 bájt. struct chr unsigned x: 5; unsigned y: 7; unsigned code: 8; Ez 20 bit, de nem lehet az alaptípusnál rövidebb, tehát 4 bájt. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 6 / 11

Bitmezők Struktúrák Egész jellegű változók esetén definiálhatók az un. bitmezők. Összehasonlító példa: struct chr unsigned x; unsigned y; char code; Ez minimum 9 bájt. struct chr unsigned x: 5; unsigned y: 7; unsigned code: 8; Ez 20 bit, de nem lehet az alaptípusnál rövidebb, tehát 4 bájt. Ne feledjük, hogy a bitek tologatása növeli a futásidőt. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 6 / 11

Bitmezők Struktúrák Egész jellegű változók esetén definiálhatók az un. bitmezők. Összehasonlító példa: struct chr unsigned x; unsigned y; char code; Ez minimum 9 bájt. struct chr unsigned x: 5; unsigned y: 7; unsigned code: 8; Ez 20 bit, de nem lehet az alaptípusnál rövidebb, tehát 4 bájt. Ne feledjük, hogy a bitek tologatása növeli a futásidőt. PC-s környezetben csak a hardver programozására használjuk. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 6 / 11

Bitmezők Struktúrák Egész jellegű változók esetén definiálhatók az un. bitmezők. Összehasonlító példa: struct chr unsigned x; unsigned y; char code; Ez minimum 9 bájt. struct chr unsigned x: 5; unsigned y: 7; unsigned code: 8; Ez 20 bit, de nem lehet az alaptípusnál rövidebb, tehát 4 bájt. Ne feledjük, hogy a bitek tologatása növeli a futásidőt. PC-s környezetben csak a hardver programozására használjuk. Kontrollereknél helytakarékossági szempontokból is használjuk. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 6 / 11

Struktúrák Bitmező hardver példa Az Intel 8254 timer IC parancs regisztere: SC1 SC0 RL1 RL0 M2 M1 M0 BCD 7 6 5 4 3 2 1 0 Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 7 / 11

Struktúrák Bitmező hardver példa Az Intel 8254 timer IC parancs regisztere: SC1 SC0 RL1 RL0 M2 M1 M0 BCD 7 6 5 4 3 2 1 0 typedef struct unsigned char bcd: 1; unsigned char m: 3; unsigned char rl: 2; unsigned char sc: 2; } c8254; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 7 / 11

union union Speciális szerkezet. Arra szolgál, hogy egy adott memóriaterületet többféleképpen érhessünk el. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 8 / 11

union union Speciális szerkezet. Arra szolgál, hogy egy adott memóriaterületet többféleképpen érhessünk el. Példa: Definíció: union smpl float a; int b; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 8 / 11

union union Speciális szerkezet. Arra szolgál, hogy egy adott memóriaterületet többféleképpen érhessünk el. Példa: Definíció: union smpl float a; int b; Deklaráció:. union smpl minta;. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 8 / 11

union union Speciális szerkezet. Arra szolgál, hogy egy adott memóriaterületet többféleképpen érhessünk el. Példa: Definíció: union smpl float a; int b; Deklaráció: A mezőhozzáférés ugyanúgy történik, mint a struktúráknál: minta.a=3.14159265;. union smpl minta;. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 8 / 11

union union Speciális szerkezet. Arra szolgál, hogy egy adott memóriaterületet többféleképpen érhessünk el. Példa: Definíció: union smpl float a; int b; Deklaráció: A mezőhozzáférés ugyanúgy történik, mint a struktúráknál: minta.a=3.14159265; Ha az a mezővel hivatkozunk a terület float-ként lesz kezelve.. union smpl minta;. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 8 / 11

union union Speciális szerkezet. Arra szolgál, hogy egy adott memóriaterületet többféleképpen érhessünk el. Példa: Definíció: union smpl float a; int b; Deklaráció:. union smpl minta;. A mezőhozzáférés ugyanúgy történik, mint a struktúráknál: minta.a=3.14159265; Ha az a mezővel hivatkozunk a terület float-ként lesz kezelve. Ha a b mezővel hivatkozunk a terület int-ként lesz kezelve. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 8 / 11

union union Speciális szerkezet. Arra szolgál, hogy egy adott memóriaterületet többféleképpen érhessünk el. Példa: Definíció: union smpl float a; int b; Deklaráció:. union smpl minta;. A mezőhozzáférés ugyanúgy történik, mint a struktúráknál: minta.a=3.14159265; Ha az a mezővel hivatkozunk a terület float-ként lesz kezelve. Ha a b mezővel hivatkozunk a terület int-ként lesz kezelve....minta.a... float minta...minta.b... Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 8 / 11

Funkcionális példa union Feladat egy float adatot kell egyik számítógépről egy másikra átküldeni, de az adatcsatorna csak bájtokat képes továbbítani. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 9 / 11

Funkcionális példa union Feladat egy float adatot kell egyik számítógépről egy másikra átküldeni, de az adatcsatorna csak bájtokat képes továbbítani. Célszerű egy uniont-t használni. union IFC float f; char b[4]; } ifc; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 9 / 11

Funkcionális példa union Feladat egy float adatot kell egyik számítógépről egy másikra átküldeni, de az adatcsatorna csak bájtokat képes továbbítani. Célszerű egy uniont-t használni. union IFC float f; char b[4]; } ifc; ifc.f=3.1415; r=ifc.f; ifc.b[3] ifc.b[2] ifc.b[1] ifc.b[0] Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C programozási 2016. októbernyelv 6. Struktúrá 9 / 11

Eltérő méretű mezők union union SAMPLE float f; short s; char c; } pld; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C 2016. programozási október 6. nyelv Struktúrá 10 / 11

Eltérő méretű mezők union union SAMPLE float f; short s; char c; } pld; &pld Erre nő a memóri cím union SAMPLE pld; float f; short s; char c; Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C 2016. programozási október 6. nyelv Struktúrá 10 / 11

union Típusként definiált union Hagyományos módszer: Definíció: union smpl float a; int b; Deklaráció:. union smpl pld;. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C 2016. programozási október 6. nyelv Struktúrá 11 / 11

union Típusként definiált union Hagyományos módszer: Definíció: union smpl float a; int b; Deklaráció:. union smpl pld;. Típusként Definíció: typedef union float a; int b; } smpl; Deklaráció:. smpl pld;. Óbudai Egyetem Kandó Kálmán Villamosmérnöki Kar C 2016. programozási október 6. nyelv Struktúrá 11 / 11