Bevezetés a tömbökbe a C programozásban
A tömb egy olyan adatszerkezet, amely homogén adatok tárolására szolgál a szomszédos memóriákban.
Itt az index egy elem helyére utal a tömbben. Képzeljük el, ha A (L) a tömb neve, ahol „A” a változó neve és „L” a tömb hossza, azaz a tömbben található elemek száma.
Ezután A (i) képviseli az elemet a tömb azon „i + 1” helyzetében. Példa:
A (6) = 72 egy elemet jelent a tömb 6 + 1-es helyén.
Array igény
Segít nagy számú elem ábrázolásában egyetlen változó segítségével. Azt is megkönnyíti, hogy az elemhez való gyorsabb hozzáférés könnyen tárolható legyen a memóriahelyen, a tömb indexe alapján, amely jelzi az elem helyét a tömbben.
Elemek elérése a tömbben
A tömb bármely elemének elérése sokkal könnyebb, és O (1) komplexitásban megtehető
A tömb indexei 0-tól -1, 0-ig indítják a tömb első elemét, és -1 a tömb utolsó elemét jelzik. Hasonlóképpen, a -2 a tömb utolsó, de egy elemét jelzi.
Például:
Legyen A egy 7 hosszúságú tömb, és hozzá kell férni az 94-es értékű elemhez, akkor az A (3) -ot kell használnia.
Szintaxis
printf („% d”, A (3)) - Ez a 94 nyomtatást eredményezi, ahol 3 az index, amelyhez hozzáférnünk kell, és a a tömb változója.
C tömbnyilatkozat C
A C betűben a tömböt helyesen kell deklarálni, mielőtt a nevét és hosszát felhasználná. Három szintaxis van, amelyekben tömbök deklarálhatók az AC programban
1. szintaxis
int A (7) = (21, 56, 32, 52, 63, 12, 48) - A tömb hosszának és elemeinek deklarálása
C Program
#include
int main(
int a(7) = (21, 56, 32, 52, 63, 12, 48);
int i;
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)
Kimenet:
2. szintaxis
int A () = (21, 56, 32, 52, 63, 12, 48) - A tömb hosszának deklarálása
C Program
#include
int main(
int a() = (21, 56, 32, 52, 63, 12, 48);
int i;
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)
Kimenet:
3. szintaxis
int A (7); - Csak a tömb hosszának deklarálása.
C Program
#include
int main(
int a(7) ;
int i;
printf(“Please enter the array elements”);
for(i=0;i<7;i++)(
scanf(“%d\n”, &a(i));
)
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)
Kimenet:
4. szintaxis
int A (7) = (0) - - A tömb és az elem hosszának deklarálása, ha az elem minden helyzetben azonos.
C Program
#include
int main(
int a(7)=(0) ;
int i;
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, a(i));
)
return 0;
)
Kimenet:
5. szintaxis
A tömb hosszának megadása és az elemek értéke, ahol minden érték azonos
1. eset - int a (3) = ((0..1) = 3) -
2. eset - int a (3) = (0); -
6. szintaxis
int * a; - A tömb deklarálása az elemek helyzetére.
Nincs index a korlátozott ellenőrzéshez
Ha az elem megkísérel hozzáférni az elemhez a tömb határain kívül, akkor a fordító nem jelenít meg hibát, hanem figyelmeztetést generál. És váratlan eredményt ad.
Példa
a (4) = (2, 3, 4, 5);
Ha írunk printf (a (4));
A kimenet 225263545 lesz - Váratlan
Ezenkívül a C-ben a fordító nem hibázik egy olyan tömb inicializálásakor, amelynél több szám elem van, mint a deklarációban megadott hosszúság. Például az alábbi program nem jelenít meg hibát.
C Program
#include
int main(
int arr(2)=(10, 22, 56, 32, 45, 89) ;
int i;
printf(“Elements of array are”);
for(i=0;i<2;i++)(
printf(“%d\n”, arr(i));
)
return 0;
)
Kimenet:
Elemek visszakeresése a tömbben
Egy tömb elemeinek kinyerése és kinyomtatása nagyon egyszerű feladat. Csak egy hurok szükséges egy tömb n elemének kinyomtatásához. így egy ilyen program összetettsége O (n).
Például int int (7) = (23, 56, 8, 944, 58, 24, 5);
Program tömb elemeinek kinyomtatásához
C Program
#include
int main(
int arr(7)=(23, 56, 8, 944, 58, 24, 5) ;
int i;
printf(“Elements of array are”);
for(i=0;i<7;i++)(
printf(“%d\n”, arr(i));
)
return 0;
)
Kimenet:
Többdimenziós tömb
A C nyelv lehetővé teszi a többdimenziós tömbök használatát is, azaz olyan tömbök, amelyek sorokban és oszlopokban is elemeket tudnak tartani.
Nyilatkozat
A többdimenziós tömb deklarálásakor meg kell határoznia az összes méret hosszát, kivéve a baloldalt, mert ez opcionális.
Példa
A tömb alábbiak szerinti deklarálása hibát fog eredményezni, mivel a baloldalon kívüli méretek nincs megadva.
Int a () () (2) = (
((1, 2), (3, 4)),
((5, 6), (7, 8))
)
Példa
Az alábbiakban látható a helyes szintaxis a többdimenziós tömb C-ben kifejezésére.
Int a () (3) = (
(52, 56, 86), (44, 6, 21)
)
Tömb átadása paraméterként a függvényben
Időnként egy függvény létrehozásakor megköveteljük, hogy a függvény számos változót használjon, amelyeket a különböző függvényekből ki kell vennie. Abban az időben ezeket a változókat paraméterként kell továbbítani arra a funkcióhívásra. De végül, amint a változók száma növekszik, tömböt kell használnunk a változó átadására, vagy abban az esetben, ha valamilyen műveletet kell végrehajtani a tömbökön, akkor egy teljes tömb átadására is szükség van, mint egy függvény paramétere. Egy tömb, mint változó átadása a függvényhez:
1. Hívás érték szerint
Az ilyen típusú hívásnál a tömb tényleges értékeit átmásolják a formális paraméterbe, ahol mindkettőt különböző helyre tárolják, így az értékek bármilyen változása nem tükröződik a függvényben.
C Program
#include
Void show( char ch)
(
printf("%c ", ch);
)
int main()
(
char arr() = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j');
for (int x=0; x<10; x++)
(
show(arr(x));//value of array //elements are passed as an argument
)
return 0;
)
Kimenet:
2. Hívás referenciaként
Míg a függvény meghívásakor a tömb tényleges értékeinek átadása helyett paraméterként átadjuk a változóra mutató hivatkozást, akkor hívásnak referenciának nevezzük.
C Program
#include
Void show( char ch)
(
printf("%c ", ch);
)
int main()
(
char arr() = (1, 2, 3, 4, 5, 6, 7, 8, 9, 0);
for (int x=0; x<10; x++)
(
show(&arr(x));//reference of array //elements are passed as an argument
)
return 0;
)
Kimenet:
3. A teljes tömb átadása érvként
Pl. - Legyen arr egy 7 elemből álló tömb. A disztribúció egy olyan tömb elemeinek megjelenítésére szolgál, amelyek 2 argumentumot vesznek fel: az első a tömb első helyére mutat, a másik pedig a tömb hossza (var2). az arr függvény változó, amely az első tömb elemére és hosszára mutat, azaz 7, átadásra kerül.
C Program
#include
void disp( int *var1, int var2)
(
for(int x=0; x (
printf("Value of var_arr(%d) is: %d \n", x, *var1);
/*increment pointer for next element fetch*/
var1++;
)
)
int main()
(
int var_arr() = (12, 22, 38, 85, 65, 66, 77);
disp(var_arr, 7);
return 0;
)#include
void disp( int *var1, int var2)
(
for(int x=0; x (
printf("Value of var_arr(%d) is: %d \n", x, *var1);
/*increment pointer for next element fetch*/
var1++;
)
)
int main()
(
int var_arr() = (12, 22, 38, 85, 65, 66, 77);
disp(var_arr, 7);
return 0;
)
Kimenet:
A tömb memóriaelosztása
A memória ábrázolása a C nyelven az alábbiak szerint 5 részre oszlik: -
- Szöveg szegmens
- Inicializált adat szegmens
- Inicializálatlan adat szegmens
- Kazal
- Halom
Az adatok, a halom és a verem a három szegmens, ahol a tömbök memóriát rendelhetnek az elemek tárolására, ugyanúgy, mint a többi változó.
- Dinamikus tömbök: A dinamikus tömbök olyan tömbök, amelyeknek memóriahelyet kell igénybe venniük futási időben. Az ilyen típusú tömbök számára a memóriát a halommemória helyén osztják el.
- Globális vagy statikus tömbök: Ezek a tömb típusok, amelyeket a fordítási időpontban osztanak el. Így az adatszegmentum-memóriát mindig hozzá kell rendelni az ilyen tömbökhez.
- Helyi tömbök: Azokat a tömböket, amelyek egy funkción vagy blokkon belül inicializálódnak, helyi tömböknek nevezzük. Az ilyen típusú tömbök memóriát kapnak a verem szegmensre.
Karakter tömb
A C sorozatban a karakterláncokat egydimenziós karaktersorozatnak tekintik, amelynek nulla karaktere '\ 0' az utolsó pozíciójában, amelyet a fordító automatikusan hozzáad.
Például az „imádom a kódolást” egydimenziós tömbként számolják 14-es hosszúságú c-ben, a végén '\ 0' karakterrel.
Nyilatkozat: Kétféle módon deklarálható és inicializálható a karakter tömb-
- char str (12) = „Szeretem a kódot”;
- char str (12) = ("én", "", "l", "o", "v", "e", "", "c", "o", "d", "e", " 0 ''); - Itt a végén '\ 0' karakterrel kell befejezni.
- Char ch (3) = 'modi' - jogellenes nyilatkozat
Bemenet és kimenet
A „% c” karakterisztika bemenetének és kimenetének megjelenítésével C-ben a scanf () és a printf () függvény használható.
Bár ugyanazt a karakterláncokat megvalósítja, a „% s” használható, de megállítja a szkennelést az első szóköz karakter előfordulásakor.
C program:
#include
#include
int main()
(
char str(20);
printf(“Enter a string”);
scanf(“%(^\n)”, &str);
printf(“%s”, str);
return 0;
)
Kimenet:
A printf és a scanf függvényeken kívül a C olyan karakterláncfunkciókat is nyújt, mint például a gets () és a () helyezi, hogy figyelmen kívül hagyja a karakterlánc fehér tereit szkennelés és nyomtatás közben.
Következtetés
A tömb egy olyan adatstruktúra, amelyet a homogén adatok tárolására szomszédos memóriahelyen használnak. A tömbök a programozásban különféle összetett adatstruktúrák, például fa, halom stb. Ábrázolására szolgálnak. A C nyelv többdimenziós tömböket tesz lehetővé az összes primitív adattípus számára. A karakterláncokat karaktermátrixként is ábrázoljuk, a '\ 0' null karakter az utolsó karakter. A tömbök a programozásban lehetővé teszik a tömb elemeinek gyors visszakeresését és közvetlen elérését az index tárolására szolgáló index használatával.
Ajánlott cikkek
Ez egy útmutató a tömbökhez a C programozásban. Itt tárgyaljuk a Bevezetés, a tömb szükségleteit, valamint a tömb átadása függvényeket, amelyek tartalmazzák a hívás érték szerint, a referencia alapján történő hívást és a teljes tömb átadását argumentumként. A következő cikkeket is megnézheti további információkért -
- 3D tömbök C-ben
- Legjobb C fordító
- Minta a C programozásban
- Faktorialis C
- Útmutató a tömbökhez a C # -ben
- 3D tömbök C ++ formátumban
- Útmutató a tömbökhöz a PHP-ben
- C Programozó mátrix szorzás
- PHP tömb funkciók | Típusok | Példák