Download C_Nyelv_es_Programozas_kinyomtatva_Debrecen PDF

TitleC_Nyelv_es_Programozas_kinyomtatva_Debrecen
File Size3.1 MB
Total Pages267
Document Text Contents
Page 2

“C_Programozas” — 2008/6/2 — 17:13 — page 6 — #2

6 TARTALOM

3.5.4. A return utasítás 57

3.6. Megoldott feladatok 58

3.7. Elemi algoritmusok összefoglalása 62

3.7.1. Összeg- és szorzatszámítás 62

3.7.2. Adott tulajdonságú elemek megszámolása 63

3.7.3. Átlagszámítás 63

3.7.4. Adott tulajdonságú elem létezésének ellenőrzése 64

3.7.5. Adott tulajdonságú elem megkeresése 64

3.7.6. Legnagyobb és legkisebb elem értékének
meghatározása 65

3.7.7. Legnagyobb és legkisebb elem pozíciójának
meghatározása 66

3.7.8. Legnagyobb közös osztó meghatározása 66

3.7.9. Legkisebb közös többszörös meghatározása 67

3.7.10. Egy szám tükrözése 67

3.8. Kitűzött feladatok 68

4. Kifejezések 74

4.1. A kifejezések jobb (Rvalue) és bal (Lvalue) értéke 76

4.2. Konstansok 77

4.2.1. Egész típusú konstansok 77

4.2.1.1. Az egész konstansok típusai 77

4.2.2. Valós típusú konstansok 78

4.2.3. Karakter típusú konstansok 78

4.2.4. Karakterlánc típusú konstansok 80

4.2.5. Szimbolikus konstansok 80

4.3. Operátorok 81

4.3.1. Aritmetikai operátorok 81

4.3.2. Összehasonlítási operátorok 81

4.3.3. Logikai operátorok 82

4.3.4. Bitenkénti operátorok 83

4.3.5. Értékadás-operátor 85

Page 133

“C_Programozas” — 2008/6/2 — 17:13 — page 137 — #133

7. DINAMIKUS HELYFOGLALÁS 137

Megjegyzések:
– A malloc és calloc között az alapvető különbség az, hogy az első mint

egyetlen blokk, a második pedig mint adott számú blokk kapja meg a
lefoglalandó terület méretét.

– A dinamikus helyfoglalást kezelő függvények prototípusait a stdlib.h
header állomány tartalmazza, ezért használatuk szükségessé teszi az
#include<stdlib.h> programsort.
Példa: Hozzunk létre dinamikusan egy n elemű int típusú tömböt,

majd szabadítsuk fel a lefoglalt területet.
Első megoldás:

int n, *p;
scanf(”%d”, &n);
p=(int*)malloc(n*sizeof(int));
...
free(p);

Második megoldás:
int n, *p;
scanf("%d", &n);
p=(int*)calloc(n, sizeof(int));
...
free(p);

Megjegyzés. Emlékezzünk rá, hogy a p pointer használható a tömb
neveként, tehát hivatkozhatunk a tömb elemeire a megszokott módon, in-
dexeléssel. Például: p[0], p[1], p[i], p[n-1]

Az alábbi példák azt mutatják be, hogyan történhet a dinamikus
helyfoglalás bizonyos esetekben, és hogyan hivatkozhatunk a létrejött di-
namikus változóra, illetve az elemeire (tömbök esetén).

Dinamikus double változó:
double* p;
p=(double*)malloc(sizeof(double));

Hivatkozás: *p
Dinamikus helyfoglalás konstans elemszámú egydimenziós tömb

számára:
#define N 100
double* p;
p=(double*)malloc(N*sizeof(double));

Hivatkozás a tömb elemére: p[i]

Page 134

“C_Programozas” — 2008/6/2 — 17:13 — page 138 — #134

138 7. DINAMIKUS HELYFOGLALÁS

Dinamikus helyfoglalás n elemű egydimenziós tömb számára:
int n;
double* p;
scanf("%d", &n);
p=(double*)malloc(n*sizeof(double));

Hivatkozás a tömb elemére: p[i]
Dinamikus helyfoglalás konstans méretű kétdimenziós tömb számára:

#define N 100
#define M 100
double(*p)[M];
p=(double(*)[M])malloc(N*M*sizeof(double));

Hivatkozás a tömb elemére: p[i][j]
Dinamikus helyfoglalás n soros, de konstans oszlopszámú kétdimenziós

tömb számára:
#define M 100
int n;
double(*p)[M];
scanf("%d", &n);
p=(double(*)[M])malloc(n*M*sizeof(double));

Hivatkozás a tömb elemére: p[i][j]
Dinamikus helyfoglalás n×m méretű kétdimenziós tömb számára.
Első megoldás (úgy fogjuk fel, mint egydimenziós tömböt):

int n,m;
double* p;
scanf("%d%d", &n, &m);
p=(double*)malloc(n*m*sizeof(double));

Hivatkozás a kétdimenziós tömb (i,j) elemére: p[i * m + j]
Fordítva, ha k egy elem indexe az egydimenziós tömbben, akkor ennek

a kétdimenziós tömbbeli indexei : i=k/m, j=k%m
Második megoldás (létrehozunk egy n elemű double-pointer tömböt,

amelynek minden eleme mutat egy m elemű double tömbre):
int n,m,i;
double ** p;
scanf("%d%d", &n, &m);
p=(double**)malloc(n*sizeof(double*));
for(i=0;i<n;i++)
p[i]=(double*)malloc(m*sizeof(double));

Hivatkozás a kétdimenziós tömb (i,j) elemére: p[i][j]

Similer Documents