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

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

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

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

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

A C programozási nyelv II. Utasítások. A függvény.

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

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

Programozas 1. Strukturak, mutatok

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

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

Bevezetés a C++ programozási nyelvbe

8. gyakorlat Pointerek, dinamikus memóriakezelés

Programozás I gyakorlat

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

5. Gyakorlat. struct diak {

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

1. Alapok. Programozás II

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

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

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)

Programozási Nyelvek: C++

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

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

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

Alkalmazott modul: Programozás 8. előadás. Strukturált programozás: dinamikus memóriakezelés. Dinamikus memóriakezelés. Dinamikus memóriakezelés

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Programozás C és C++ -ban

Programozás I gyakorlat

C++ programozási nyelv Konstruktorok-destruktorok

Alkalmazott modul: Programozás 10. fejezet. Strukturált programozás: dinamikus memóriakezelés. Giachetta Roberto

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

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

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

Programozás C nyelven (9. ELŐADÁS) Sapientia EMTE

10. gyakorlat. Pointerek Tárolási osztályok

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

C programozási nyelv

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

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Kivételkezelés a C++ nyelvben Bevezetés

Java és web programozás

Java II. I A Java programozási nyelv alapelemei

Java és web programozás

Óbudai Egyetem. C programozási nyelv

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

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

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

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

Programozás C++ -ban

OOP #14 (referencia-elv)

Pointerek C-ben, C++-ban

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

Java II. I A Java programozási nyelv alapelemei

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

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

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

Programozás I. 5. Előadás: Függvények

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

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

Pénzügyi algoritmusok

Memóriakezelés, dinamikus memóriakezelés

Java és web programozás

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

Java III. I I. Osztálydefiníció (Bevezetés)

Java III. I I. Osztálydefiníció (Bevezetés)

Bevezetés a C++ programozási nyelvbe

Pénzügyi algoritmusok

C++ programozási nyelv

Programozás I gyakorlat. 10. Stringek, mutatók

Programozás C++ -ban

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

C++ programozási nyelv Konstruktorok Gyakorlat

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Mutatók és mutató-aritmetika C-ben március 19.

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Mintavételes szabályozás mikrovezérlő segítségével

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

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

Ha meg akarod tudni, hogy az egyes típusok milyen méretűek a te rendszereden, a következő program megmutatja:

Objektumok tulajdonságai

Programozás C++ -ban

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Programozás alapjai II. (2. ea) C++

Programozás alapjai II. (2. ea) C++

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

Dinamikus memóriakezelés Fájlkezelés

Programozás alapjai 2.Gy: A C nyelv alapjai P R O

500. AA Megoldó Alfréd AA 500.

és az instanceof operátor

Programozás C++ -ban 2007/1

Átírás:

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 1

A struktúra deklarációja 1. A struktúra olyan összetett típus, amelynek elemei különbözÿ típusúak lehetnek. Adott szerkezet változók deklarálása: struct {elemek deklarációja} változólista A változólista elemei adott szerkezet struktúrák. A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 2

A struktúra deklarációja 2. Struktúra típus létrehozása struct név {elemek deklarációja} Létrehoz egy név nev típust, amely a megadott szerkezet struktúra. Ezután a struct név típusnévként használható deklarációkban. Ez a forma az ajánlott. A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 3

A struktúra deklarációja 3. Az elemek deklarációja pontosvesszÿvel elválasztott deklarációlista Struktúra tagja lehet tetszÿleges típusú változó vagy tömb tetszÿleges típusú mutató már definiált struktúra (vagy annak mutatója) nem lehet tagja önmaga lehet viszont tagja önmaga mutatója (önhivatkozó struktúra). A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 4

A struktúra deklarációja 4. Példa struktúra változók deklarálására: struct { int év; char honap[12]; int nap; } szulinap, ma, tegnap; A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 5

A struktúra deklarációja 5. Példa struktúra típus deklarálására: struct datum { int év; char honap[12]; int nap; }; struct datum szulinap, ma, tegnap,*pd; A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 6

Mÿveletek a struktúrával A struktúrákkal az alábbi m veleteket végezhetjük: az& operátorral képezhetjük a címét hivatkozhatunk valamelyik elemére a "." (pont) és a "->" operátorral megengedett két azonos típusú struktúra közötti értékadás struktúra lehet függvény paramétere vagy visszatérési értéke A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 7

Hivatkozás a struktúra tagjaira Mezÿhivatkozás struktúra nevével struktúra_azonosító.mezÿnév Például: szulinap.ev = 1951; Hivatkozás struktúra-mutatóval (*pd).mezÿnév vagy pd -> mezÿnév A fenti két forma egyenértékÿ. A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 8

Statikus memória foglalás Deklarált objektum a hatáskörébe belépve lefoglalódik a hely a teljes élettartam alatt foglalva marad, akkor is, ha nem használjuk a tömb elemszáma már fordítási id ben ismert kell legyen helypazarlás Megoldás: helyfoglalás és a feleslegessé vált memória felszabadítása futásidÿben A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 9

Dinamikus memória kezelés 1. void* malloc(size_t meret) Lefoglal meret byte nagyságú memóriaterületet. Visszatérési értéke a lefoglalt terület kezdÿcíme, vagy NULL, ha a helyfoglalás sikertelen volt. A visszaadott pointer void* típusú, ha tehát a memóriaterületet tömb-szer en akarjuk használni, azt a tárolni kívánt adatok típusára kell konvertálni. A size_t elÿre definiált típus (stdlib.h) A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 10

Dinamikus memória kezelés 2. void free(void* blokk) Felszabadítja a blokk kezdÿcím memóriaterületet. A paraméterének elÿzÿleg malloc, calloc vagy a realloc függvény segítségével kellett értéket kapnia. További kapcsolódó függvények: calloc, realloc A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 11

Dinamikus memória kezelés (Példa 1.) #include <stdio.h> #include <stdlib.h> struct idopont { int ora; int perc; }; static int nap[]={0,31,28,31,30,31,30,31, 31,30,31,30,31}; A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 12

Dinamikus memória kezelés (Példa 2.) int main() { int i; int honap; struct idopont* munkaido; scanf("%d",&honap); munkaido = (struct idopont*) malloc(nap[honap]*sizeof(struct idopont)); A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 13

Dinamikus memória kezelés (Példa 3.) for (i = 1; i <= nap[honap]; i++) { scanf("%d", &munkaido[i].ora); scanf("%d", &munkaido[i].perc); printf("\n%d %d %d\n", i, munkaido[i].ora, munkaido[i].perc); } return 0; } A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 14