´ Obudai Egyetem ´ an ´ Villamosmern ´ oki ¨ Kar Kando´ Kalm ´ nyelv C programozasi ´ es ´ Unionok Struktur ´ ak ¨ Dr. Schuster Gyorgy
´ 2016. oktober 6.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 1 / 11ur ´ a´
´ Struktur ´ ak
´ Struktur ´ ak ¨ A struktura ´ egy olyan osszetett adatszerkezet, amely nemcsak ¨ azonos t´ıpusu´ elemeket rendelhet ossze.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 2 / 11ur ´ a´
´ Struktur ´ ak
´ Struktur ´ ak ¨ A struktura ´ egy olyan osszetett adatszerkezet, amely nemcsak ¨ azonos t´ıpusu´ elemeket rendelhet ossze. ´ aban ´ ´ ul A struktura ´ defin´ıcioj le´ırjuk, hogy a struktura ´ hogyan ep ¨ fel.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 2 / 11ur ´ a´
´ Struktur ´ ak
´ Struktur ´ ak ¨ A struktura ´ egy olyan osszetett adatszerkezet, amely nemcsak ¨ azonos t´ıpusu´ elemeket rendelhet ossze. ´ aban ´ ´ ul A struktura ´ defin´ıcioj le´ırjuk, hogy a struktura ´ hogyan ep ¨ fel. ´ aul: ´ Peld struct ember { ´ Definialtunk egy olyan elemet, amely char nev[80]; ´ adatait. egyben tartalmazza egy egyen unsigned kor; float suly; };
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 2 / 11ur ´ a´
´ Struktur ´ ak
´ Struktur ´ ak ¨ A struktura ´ egy olyan osszetett adatszerkezet, amely nemcsak ¨ azonos t´ıpusu´ elemeket rendelhet ossze. ´ aban ´ ´ ul A struktura ´ defin´ıcioj le´ırjuk, hogy a struktura ´ hogyan ep ¨ fel. ´ aul: ´ Peld struct ember { ´ Definialtunk egy olyan elemet, amely char nev[80]; ´ adatait. egyben tartalmazza egy egyen unsigned kor; float suly; }; ´ on ´ al ´ egy adott peld ´ anyt ´ ´ A deklaraci hozunk letre.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 2 / 11ur ´ a´
´ Struktur ´ ak
´ Struktur ´ ak ¨ A struktura ´ egy olyan osszetett adatszerkezet, amely nemcsak ¨ azonos t´ıpusu´ elemeket rendelhet ossze. ´ aban ´ ´ ul A struktura ´ defin´ıcioj le´ırjuk, hogy a struktura ´ hogyan ep ¨ fel. ´ aul: ´ Peld struct ember { ´ Definialtunk egy olyan elemet, amely char nev[80]; ´ adatait. egyben tartalmazza egy egyen unsigned kor; float suly; }; ´ on ´ al ´ egy adott peld ´ anyt ´ ´ ´ A deklaraci hozunk letre. Pelda: ´ ´ egy Jozsi (jozsi) mar struct ember jozsi; ´ szemely. ´ konkret
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 2 / 11ur ´ a´
´ Struktur ´ ak
˝ ´ er ´ es ´ kozvetlen ¨ ´ indirekt Mezohozz af es ´ any” ´ ˝ ehez ´ ˝ ´ er ´ es ´ operator ´ Egy struktura ´ ”peld adott mezoj a mezohozz af ´ evel ´ ´ unk ´ fer ¨ hozza. ’.’ seg´ıtseg jozsi.kor=43;
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 3 / 11ur ´ a´
´ Struktur ´ ak
˝ ´ er ´ es ´ kozvetlen ¨ ´ indirekt Mezohozz af es ´ any” ´ ˝ ehez ´ ˝ ´ er ´ es ´ operator ´ Egy struktura ´ ”peld adott mezoj a mezohozz af ´ evel ´ ´ unk ´ fer ¨ hozza. ’.’ seg´ıtseg jozsi.kor=43; ´ any ´ kor mezoje ˝ legyen egyenlo˝ 43-al. Ezutan ´ Vagyis a jozsi peld ´ ´ valtoz ´ ´ ugy ´ hasznaljuk, mint egy normalis ot.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 3 / 11ur ´ a´
´ Struktur ´ ak
˝ ´ er ´ es ´ kozvetlen ¨ ´ indirekt Mezohozz af es ´ any” ´ ˝ ehez ´ ˝ ´ er ´ es ´ operator ´ Egy struktura ´ ”peld adott mezoj a mezohozz af ´ evel ´ ´ unk ´ fer ¨ hozza. ’.’ seg´ıtseg jozsi.kor=43; ´ any ´ kor mezoje ˝ legyen egyenlo˝ 43-al. Ezutan ´ Vagyis a jozsi peld ´ ´ valtoz ´ ´ ugy ´ hasznaljuk, mint egy normalis ot. ´ any ´ neve, hanem a c´ıme van megadva ... Ha nem a peld struct ember jozsi; struct ember *jp; . . . jp=&jozsi; . . . jp->kor=43; ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 3 / 11ur ´ a´
´ Struktur ´ ak
˝ ´ er ´ es ´ kozvetlen ¨ ´ indirekt Mezohozz af es ´ any” ´ ˝ ehez ´ ˝ ´ er ´ es ´ operator ´ Egy struktura ´ ”peld adott mezoj a mezohozz af ´ evel ´ ´ unk ´ fer ¨ hozza. ’.’ seg´ıtseg jozsi.kor=43; ´ any ´ kor mezoje ˝ legyen egyenlo˝ 43-al. Ezutan ´ Vagyis a jozsi peld ´ ´ valtoz ´ ´ ugy ´ hasznaljuk, mint egy normalis ot. ´ any ´ neve, hanem a c´ıme van megadva ... Ha nem a peld struct ember jozsi; struct ember *jp; . . . jp=&jozsi; . . .
Szo´ szerint! ´ A jp altal megc´ımzett struktura ´ kor ˝ legyen egyenlo˝ 43-al. mezoje
jp->kor=43; ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 3 / 11ur ´ a´
´ Struktur ´ ak
Rekurz´ıv struktura ´ ´ es: ´ mit tartalmazhat egy struktura? Kerd ´
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 4 / 11ur ´ a´
´ Struktur ´ ak
Rekurz´ıv struktura ´ ´ es: ´ mit tartalmazhat egy struktura? Kerd ´ ´ ´ Valasz: barmilyen adatelemet, de nem tartalmazhat olyan ´ mint onmaga, ¨ ¨ ¨ struktur ´ at, se kozvetlen ul ¨ se kozvetetten.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 4 / 11ur ´ a´
´ Struktur ´ ak
Rekurz´ıv struktura ´ ´ es: ´ mit tartalmazhat egy struktura? Kerd ´ ´ ´ Valasz: barmilyen adatelemet, de nem tartalmazhat olyan ´ mint onmaga, ¨ ¨ ¨ struktur ´ at, se kozvetlen ul ¨ se kozvetetten. ¨ Viszont tartalmazhat olyan ”t´ıpusu” ´ pointert, mint onmaga.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 4 / 11ur ´ a´
´ Struktur ´ ak
Rekurz´ıv struktura ´ ´ es: ´ mit tartalmazhat egy struktura? Kerd ´ ´ ´ Valasz: barmilyen adatelemet, de nem tartalmazhat olyan ´ mint onmaga, ¨ ¨ ¨ struktur ´ at, se kozvetlen ul ¨ se kozvetetten. ¨ Viszont tartalmazhat olyan ”t´ıpusu” ´ pointert, mint onmaga. ´ az ugynevezett Ilyen jellegu˝ alkalmazas ´ lista adatszekezet. Egy ilyen ´ struktura ´ defin´ıcioja: struct LIST { int v; struct LIST *next; };
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 4 / 11ur ´ a´
´ Struktur ´ ak
Rekurz´ıv struktura ´ ´ es: ´ mit tartalmazhat egy struktura? Kerd ´ ´ ´ Valasz: barmilyen adatelemet, de nem tartalmazhat olyan ´ mint onmaga, ¨ ¨ ¨ struktur ´ at, se kozvetlen ul ¨ se kozvetetten. ¨ Viszont tartalmazhat olyan ”t´ıpusu” ´ pointert, mint onmaga. ´ az ugynevezett Ilyen jellegu˝ alkalmazas ´ lista adatszekezet. Egy ilyen ´ struktura ´ defin´ıcioja: struct LIST { int v; struct LIST *next; };
¨ Dr. Schuster Gyorgy ()
A v az adatelem, a next az a pointer, ¨ amely a kovetkez o˝ elemre mutat.
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 4 / 11ur ´ a´
´ Struktur ´ ak
Rekurz´ıv struktura ´ ´ es: ´ mit tartalmazhat egy struktura? Kerd ´ ´ ´ Valasz: barmilyen adatelemet, de nem tartalmazhat olyan ´ mint onmaga, ¨ ¨ ¨ struktur ´ at, se kozvetlen ul ¨ se kozvetetten. ¨ Viszont tartalmazhat olyan ”t´ıpusu” ´ pointert, mint onmaga. ´ az ugynevezett Ilyen jellegu˝ alkalmazas ´ lista adatszekezet. Egy ilyen ´ struktura ´ defin´ıcioja: struct LIST { int v; struct LIST *next; };
A v az adatelem, a next az a pointer, ¨ amely a kovetkez o˝ elemre mutat. Valahogy ´ıgy.
NULL
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 4 / 11ur ´ a´
´ Struktur ´ ak
´ definialt ´ struktura T´ıpuskent ´ ´ ´ ´ A struktur ´ akat a typedef utas´ıtassal is defin´ıalhatjuk.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 5 / 11ur ´ a´
´ Struktur ´ ak
´ definialt ´ struktura T´ıpuskent ´ ´ ´ ´ A struktur ´ akat a typedef utas´ıtassal is defin´ıalhatjuk. ´ Pelda: typedef struct { char nev[80]; unsigned kor; float suly; } ember;
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 5 / 11ur ´ a´
´ Struktur ´ ak
´ definialt ´ struktura T´ıpuskent ´ ´ ´ ´ A struktur ´ akat a typedef utas´ıtassal is defin´ıalhatjuk. ´ Pelda: typedef struct ˝ kezdve van egy ember t´ıpusunk. Ettol { ´ ˝ azonosak az Lathatjuk, hogy a mezok char nev[80]; ˝ oekben ˝ ´ ´ eloz ”hagyomanyos” modon unsigned kor; ´ ´ ´ defini alt strukt ur ´ an al. float suly; } ember;
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 5 / 11ur ´ a´
´ Struktur ´ ak
´ definialt ´ struktura T´ıpuskent ´ ´ ´ ´ A struktur ´ akat a typedef utas´ıtassal is defin´ıalhatjuk. ´ Pelda: typedef struct ˝ kezdve van egy ember t´ıpusunk. Ettol { ´ ˝ azonosak az Lathatjuk, hogy a mezok char nev[80]; ˝ oekben ˝ ´ ´ eloz ”hagyomanyos” modon unsigned kor; ´ ´ ´ defini alt strukt ur ´ an al. float suly; } ember; ´ o´ egyszerus ¨ A deklaraci ˝ odik. ember jozsi;
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 5 / 11ur ´ a´
´ Struktur ´ ak
´ definialt ´ struktura T´ıpuskent ´ ´ ´ ´ A struktur ´ akat a typedef utas´ıtassal is defin´ıalhatjuk. ´ Pelda: typedef struct ˝ kezdve van egy ember t´ıpusunk. Ettol { ´ ˝ azonosak az Lathatjuk, hogy a mezok char nev[80]; ˝ oekben ˝ ´ ´ eloz ”hagyomanyos” modon unsigned kor; ´ ´ ´ defini alt strukt ur ´ an al. float suly; } ember; ´ o´ egyszerus ¨ A deklaraci ˝ odik. ember jozsi;
¨ Dr. Schuster Gyorgy ()
A struct kulcsszo´ elmaradt.
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 5 / 11ur ´ a´
´ Struktur ´ ak
´ definialt ´ struktura T´ıpuskent ´ ´ ´ ´ A struktur ´ akat a typedef utas´ıtassal is defin´ıalhatjuk. ´ Pelda: typedef struct ˝ kezdve van egy ember t´ıpusunk. Ettol { ´ ˝ azonosak az Lathatjuk, hogy a mezok char nev[80]; ˝ oekben ˝ ´ ´ eloz ”hagyomanyos” modon unsigned kor; ´ ´ ´ defini alt strukt ur ´ an al. float suly; } ember; ´ o´ egyszerus ¨ A deklaraci ˝ odik. ember jozsi;
A struct kulcsszo´ elmaradt.
´ ´ definialni ´ ´ Nem lehetseges rekurz´ıv struktur ´ at ezen a modon!
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 5 / 11ur ´ a´
´ Struktur ´ ak
´ definialt ´ struktura T´ıpuskent ´ ´ ´ ´ A struktur ´ akat a typedef utas´ıtassal is defin´ıalhatjuk. ´ Pelda: typedef struct ˝ kezdve van egy ember t´ıpusunk. Ettol { ´ ˝ azonosak az Lathatjuk, hogy a mezok char nev[80]; ˝ oekben ˝ ´ ´ eloz ”hagyomanyos” modon unsigned kor; ´ ´ ´ defini alt strukt ur ´ an al. float suly; } ember; ´ o´ egyszerus ¨ A deklaraci ˝ odik. ember jozsi;
A struct kulcsszo´ elmaradt.
´ ´ definialni ´ ´ Nem lehetseges rekurz´ıv struktur ´ at ezen a modon! ´ Miert? ´ derul A t´ıpus a struktura ´ utan ¨ ki. ´ azonos. Amugy ´ minden mas ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 5 / 11ur ´ a´
´ Struktur ´ ak
˝ Bitmezok ´ jellegu˝ valtoz ´ ´ eseten ´ definialhat ´ ´ az un. bitmezok. ˝ Egesz ok ok ¨ ´ ´ Osszehasonl´ıto pelda: struct chr { unsigned x; unsigned y; char code; }; ´ Ez minimum 9 bajt.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 6 / 11ur ´ a´
´ Struktur ´ ak
˝ Bitmezok ´ jellegu˝ valtoz ´ ´ eseten ´ definialhat ´ ´ az un. bitmezok. ˝ Egesz ok ok ¨ ´ ´ Osszehasonl´ıto pelda: struct chr { unsigned x; unsigned y; char code; }; ´ Ez minimum 9 bajt.
¨ Dr. Schuster Gyorgy ()
struct chr { unsigned x: 5; unsigned y: 7; unsigned code: 8; }; ´ Ez 20 bit, de nem lehet az alapt´ıpusnal ¨ ´ 4 bajt. ´ rovidebb, tehat
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 6 / 11ur ´ a´
´ Struktur ´ ak
˝ Bitmezok ´ jellegu˝ valtoz ´ ´ eseten ´ definialhat ´ ´ az un. bitmezok. ˝ Egesz ok ok ¨ ´ ´ Osszehasonl´ıto pelda: struct chr { unsigned x; unsigned y; char code; }; ´ Ez minimum 9 bajt.
struct chr { unsigned x: 5; unsigned y: 7; unsigned code: 8; }; ´ Ez 20 bit, de nem lehet az alapt´ıpusnal ¨ ´ 4 bajt. ´ rovidebb, tehat
´ ¨ ´ ot. ˝ Ne feledjuk, ¨ hogy a bitek ”tologatasa” noveli a futasid
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 6 / 11ur ´ a´
´ Struktur ´ ak
˝ Bitmezok ´ jellegu˝ valtoz ´ ´ eseten ´ definialhat ´ ´ az un. bitmezok. ˝ Egesz ok ok ¨ ´ ´ Osszehasonl´ıto pelda: struct chr { unsigned x; unsigned y; char code; }; ´ Ez minimum 9 bajt.
struct chr { unsigned x: 5; unsigned y: 7; unsigned code: 8; }; ´ Ez 20 bit, de nem lehet az alapt´ıpusnal ¨ ´ 4 bajt. ´ rovidebb, tehat
´ ¨ ´ ot. ˝ Ne feledjuk, ¨ hogy a bitek ”tologatasa” noveli a futasid ¨ ´ ara ´ hasznaljuk. ´ PC-s kornyezetben csak a hardver programozas
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 6 / 11ur ´ a´
´ Struktur ´ ak
˝ Bitmezok ´ jellegu˝ valtoz ´ ´ eseten ´ definialhat ´ ´ az un. bitmezok. ˝ Egesz ok ok ¨ ´ ´ Osszehasonl´ıto pelda: struct chr { unsigned x; unsigned y; char code; }; ´ Ez minimum 9 bajt.
struct chr { unsigned x: 5; unsigned y: 7; unsigned code: 8; }; ´ Ez 20 bit, de nem lehet az alapt´ıpusnal ¨ ´ 4 bajt. ´ rovidebb, tehat
´ ¨ ´ ot. ˝ Ne feledjuk, ¨ hogy a bitek ”tologatasa” noveli a futasid ¨ ´ ara ´ hasznaljuk. ´ PC-s kornyezetben csak a hardver programozas ´ helytakarekoss ´ ´ szempontokbol ´ is hasznaljuk. ´ Kontrollereknel agi ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 6 / 11ur ´ a´
´ Struktur ´ ak
´ Bitmezo˝ hardver pelda Az Intel 8254 timer IC parancs regisztere:
SC1 SC0 RL1 RL0 M2 7
¨ Dr. Schuster Gyorgy ()
6
5
4
3
M1
M0 BCD
2
1
0
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 7 / 11ur ´ a´
´ Struktur ´ ak
´ Bitmezo˝ hardver pelda Az Intel 8254 timer IC parancs regisztere:
SC1 SC0 RL1 RL0 M2 7
6
typedef struct { unsigned char unsigned char unsigned char unsigned char } c8254; ¨ Dr. Schuster Gyorgy ()
5
4
3
M1
M0 BCD
2
1
0
bcd: 1; m: 3; rl: 2; sc: 2;
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 7 / 11ur ´ a´
union
union ´ szerkezet. Arra szolgal, ´ hogy egy adott memoriater ´ Specialis uletet ¨ ¨ ´ eppen ´ ´ tobbf elek erhess unk ¨ el.
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 8 / 11ur ´ a´
union
union ´ szerkezet. Arra szolgal, ´ hogy egy adott memoriater ´ Specialis uletet ¨ ¨ ´ eppen ´ ´ tobbf elek erhess unk ¨ el. ´ Pelda: ´ Defin´ıcio: union smpl { float a; int b; };
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 8 / 11ur ´ a´
union
union ´ szerkezet. Arra szolgal, ´ hogy egy adott memoriater ´ Specialis uletet ¨ ¨ ´ eppen ´ ´ tobbf elek erhess unk ¨ el. ´ Pelda: ´ Defin´ıcio: union smpl { float a; int b; }; ´ o: ´ Deklaraci . . . union smpl minta; . . . ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 8 / 11ur ´ a´
union
union ´ szerkezet. Arra szolgal, ´ hogy egy adott memoriater ´ Specialis uletet ¨ ¨ ´ eppen ´ ´ tobbf elek erhess unk ¨ el. ´ Pelda: ´ Defin´ıcio: ˝ ´ er ´ es ´ ugyanugy ¨ enik, ´ A mezohozz af ´ tort ´ al: ´ mint a struktur ´ akn union smpl minta.a=3.14159265; { float a; int b; }; ´ o: ´ Deklaraci . . . union smpl minta; . . . ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 8 / 11ur ´ a´
union
union ´ szerkezet. Arra szolgal, ´ hogy egy adott memoriater ´ Specialis uletet ¨ ¨ ´ eppen ´ ´ tobbf elek erhess unk ¨ el. ´ Pelda: ´ Defin´ıcio: ˝ ´ er ´ es ´ ugyanugy ¨ enik, ´ A mezohozz af ´ tort ´ al: ´ mint a struktur ´ akn union smpl minta.a=3.14159265; { ˝ Ha az a mezovel hivatkozunk a terulet ¨ float a; ´ lesz kezelve. float-kent int b; }; ´ o: ´ Deklaraci . . . union smpl minta; . . . ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 8 / 11ur ´ a´
union
union ´ szerkezet. Arra szolgal, ´ hogy egy adott memoriater ´ Specialis uletet ¨ ¨ ´ eppen ´ ´ tobbf elek erhess unk ¨ el. ´ Pelda: ´ Defin´ıcio: ˝ ´ er ´ es ´ ugyanugy ¨ enik, ´ A mezohozz af ´ tort ´ al: ´ mint a struktur ´ akn union smpl minta.a=3.14159265; { ˝ Ha az a mezovel hivatkozunk a terulet ¨ float a; ´ lesz kezelve. float-kent int b; ˝ b mez ovel hivatkozunk a terulet ¨ Ha a }; ´ lesz kezelve. int-kent ´ o: ´ Deklaraci . . . union smpl minta; . . . ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 8 / 11ur ´ a´
union
union ´ szerkezet. Arra szolgal, ´ hogy egy adott memoriater ´ Specialis uletet ¨ ¨ ´ eppen ´ ´ tobbf elek erhess unk ¨ el. ´ Pelda: ´ Defin´ıcio: ˝ ´ er ´ es ´ ugyanugy ¨ enik, ´ A mezohozz af ´ tort ´ al: ´ mint a struktur ´ akn union smpl minta.a=3.14159265; { ˝ Ha az a mezovel hivatkozunk a terulet ¨ float a; ´ lesz kezelve. float-kent int b; ˝ b mez ovel hivatkozunk a terulet ¨ Ha a }; ´ lesz kezelve. int-kent ´ o: ´ Deklaraci . . . union smpl minta; . . . ¨ Dr. Schuster Gyorgy ()
.. .m in fl ta. a. oa .. t
.. b. a. t n mi t .. in
.
minta
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 8 / 11ur ´ a´
union
´ pelda ´ Funkcionalis ´ ıtog ´ epr ´ ol ˝ egy masikra ´ Feladat egy float adatot kell egyik szam´ ´ uldeni, ´ ´ ´ ıtani. atk ¨ de az adatcsatorna csak bajtokat kepes tovabb´
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 9 / 11ur ´ a´
union
´ pelda ´ Funkcionalis ´ ıtog ´ epr ´ ol ˝ egy masikra ´ Feladat egy float adatot kell egyik szam´ ´ uldeni, ´ ´ ´ ıtani. atk ¨ de az adatcsatorna csak bajtokat kepes tovabb´ ´ ´ Celszer u˝ egy uniont-t hasznalni.
union IFC { float f; char b[4]; } ifc;
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 9 / 11ur ´ a´
union
´ pelda ´ Funkcionalis ´ ıtog ´ epr ´ ol ˝ egy masikra ´ Feladat egy float adatot kell egyik szam´ ´ uldeni, ´ ´ ´ ıtani. atk ¨ de az adatcsatorna csak bajtokat kepes tovabb´ ´ ´ Celszer u˝ egy uniont-t hasznalni.
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]
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C programoz ´asi ´ nyelv Obudai Egyetem Kando´ Kalm 2016. oktober 6. Strukt 9 / 11ur ´ a´
union
´ o˝ meret ´ u˝ mezok ˝ Elter
union SAMPLE { float f; short s; char c; } pld;
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C 2016. ´ asi ´ 6. Obudai Egyetem Kando´ Kalm programoz oktober nyelv Strukt 10 / 11ur ´ a´
union
¨ Dr. Schuster Gyorgy ()
char c;
union SAMPLE pld;
&pld Erre nő a memóri cím
union SAMPLE { float f; short s; char c; } pld;
short s;
float f;
´ o˝ meret ´ u˝ mezok ˝ Elter
´ ´ an ´ Villamosmern ´ oki ¨ Kar C 2016. ´ asi ´ 6. Obudai Egyetem Kando´ Kalm programoz oktober nyelv Strukt 10 / 11ur ´ a´
union
´ definialt ´ union T´ıpuskent ´ ´ Hagyomanyos modszer: ´ Defin´ıcio: union smpl { float a; int b; }; ´ o: ´ Deklaraci . . . union smpl pld; . . . ¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C 2016. ´ asi ´ 6. Obudai Egyetem Kando´ Kalm programoz oktober nyelv Strukt 11 / 11ur ´ a´
union
´ definialt ´ union T´ıpuskent ´ ´ Hagyomanyos modszer:
´ T´ıpuskent
´ Defin´ıcio:
´ Defin´ıcio:
union smpl { float a; int b; };
typedef union { float a; int b; } smpl;
´ o: ´ Deklaraci
´ o: ´ Deklaraci
. . . union smpl pld; . . .
. . . smpl pld; . . .
¨ Dr. Schuster Gyorgy ()
´ ´ an ´ Villamosmern ´ oki ¨ Kar C 2016. ´ asi ´ 6. Obudai Egyetem Kando´ Kalm programoz oktober nyelv Strukt 11 / 11ur ´ a´