Uvod v matrike v C programiranju
Niz je vrsta podatkovne strukture, ki se uporablja za shranjevanje homogenih podatkov v sosednjih pomnilniških mestih.
Tu se indeks nanaša na lokacijo elementa v matriki. Predstavljajmo si, če je A (L) ime matrike, kjer je "A" ime spremenljivke in "L" dolžina matrike, torej število elementov, prisotnih v matriki.
Nato A (i) predstavlja element na tistem mestu "i + 1" v nizu. Na primer:
(6) = 72 pomeni element na 6 + 1. lokaciji matrike.
Potreba po Array
Pomaga predstavljati veliko število elementov z uporabo ene same spremenljivke. Prav tako omogoča lažji dostop do elementov za shranjevanje v pomnilniški lokaciji s pomočjo indeksa matrike, ki predstavlja lokacijo elementa v matriki.
Dostop do elementov v nizu
Dostop do katerega koli elementa v matriki je veliko lažji in ga je mogoče storiti v kompleksnosti O (1)
Indeksi matrike se začnejo od 0 do -1.0 označujejo prvi element matrike in -1 zadnji element matrike. Podobno -2 označuje zadnji, vendar en element matrike.
Primer:
Naj bo A niz z dolžino 7 in mora do njega dostopati do elementa z vrednostjo 94, potem mora uporabiti A (3).
Sintaksa
printf ("% d", A (3)) - To bo natisnilo 94, kjer je 3 indeks, do katerega moramo dostopati, a je spremenljivka matrike.
Izjava matrike v C
V C mora biti matrika pravilno razglašena, preden jo uporabimo z imenom in dolžino. Obstajajo tri skladnje, v katerih lahko v programu ac objavimo matrike
Sintaksa 1
int A (7) = (21, 56, 32, 52, 63, 12, 48) - Izjava dolžine in elementov matrike
Program C
#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;
)
Izhod:
Sintaksa 2
int A () = (21, 56, 32, 52, 63, 12, 48) - Izjava dolžine elementov matrike
Program C
#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;
)
Izhod:
Sintaksa 3
int A (7); - Razglasitev samo dolžine matrike.
Program C
#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;
)
Izhod:
Sintaksa 4
int A (7) = (0); - Izjava dolžine matrike in elementa, ko je element enak na vseh položajih.
Program C
#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;
)
Izhod:
Sintaksa 5
Izjava dolžine matrike in tudi vrednosti elementov, pri katerih so vse vrednosti enake
Primer1 - int a (3) = ((0..1) = 3) -
Primer 2 - int a (3) = (0); -
Sintaksa 6
int * a; - razglasitev matrike kot kazalec na lokacijo elementov.
Ni preverjanja indeksa
Če poskusite dostop do elementa izven okvira matrike, prevajalnik ne pokaže napak, namesto tega ustvari opozorilo. In daje tudi nepričakovan rezultat.
Primer
a (4) = (2, 3, 4, 5);
Če pišemo printf (a (4));
Izhod bo 225263545 - Nepričakovano
Tudi v C, prevajalnik ne zmoti inicializiranja matrike z več števčnimi elementi od navedene dolžine v deklaraciji. Spodnji program na primer ne prikazuje napake.
Program C
#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;
)
Izhod:
Nalaganje elementov v matriki
Nalaganje elementov matrike in tiskanje le-teh je zelo enostavna naloga. Za tiskanje n elementov matrike potrebuje samo eno zanko. zato je kompleksnost takšnega programa O (n).
Na primer - vnesite a (7) = (23, 56, 8, 944, 58, 24, 5);
Program za tiskanje elementov matrike je
Program C
#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;
)
Izhod:
Večdimenzionalni niz
Jezik C omogoča tudi večdimenzionalne matrike, tj. Matrike, ki lahko vsebujejo elemente v vrsticah in stolpcih.
Izjava
Med razglasitvijo večdimenzionalnega niza morate določiti dolžino vseh dimenzij, razen leve, ker to ni obvezno.
Primer
Če razvrstite niz na spodnji način, bo prišlo do napake, saj druge dimenzije razen večine leve niso določene.
Int a () () (2) = (
((1, 2), (3, 4)),
((5, 6), (7, 8))
)
Primer
Spodaj je ena od pravilnih skladenj za deklaracijo večdimenzionalnega niza v C.
Int a () (3) = (
(52, 56, 86), (44, 6, 21)
)
Mimo matrike kot parametra v funkciji
Včasih med izdelavo funkcije od funkcije zahtevamo številne spremenljivke, ki jih mora prevzeti iz različnih funkcij. V tem času je treba te spremenljivke posredovati kot parameter temu klicu funkcije. Ko pa se število spremenljivk poveča, moramo uporabiti matriko za prenos spremenljivke, če pa je treba na nizih opraviti nekaj operacij, potem se mora pojaviti tudi celoten niz kot parameter v funkciji. Za prenos matrike kot spremenljivke v funkcijo:
1. Klic po vrednosti
Pri tej vrsti klicanja metode se dejanske vrednosti matrice kopirajo v formalni parameter, kjer sta oba shranjena na drugem mestu, tako da se vsaka sprememba vrednosti ne odrazi v funkciji.
Program C
#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;
)
Izhod:
2. Klic po referenci
Medtem ko kličete funkcijo, ko namesto da prenesete dejanske vrednosti matrike, se sklic na spremenljivko prenese kot parameter, potem je znan kot klic po referenci.
Program C
#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;
)
Izhod:
3. Prevajanje celotnega niza kot argument
Npr. - arr naj bo matrika 7 elementov.disp je funkcija za prikaz elementov matrike, ki sprejme 2 argumenta, najprej, ki kaže na prvo lokacijo matrike in drugo na dolžino matrike (var2). se prenese spremenljivka funkcije arr, ki kaže na lokacijo prvega elementa matrike in dolžino, tj. 7.
Program C
#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;
)
Izhod:
Razporeditev pomnilnika matrike
Šteje se, da je zastopanje pomnilnika v jeziku C razdeljeno na 5 razdelkov:
- Segment besedila
- Inicializirani podatkovni segment
- Neinicializirani podatkovni segment
- Zložite
- Kup
Podatki, kopica in sklad so trije segmenti, kjer lahko matriki dodelimo pomnilnik za shranjevanje njenih elementov, enako kot druge spremenljivke.
- Dinamični nizi: Dinamični nizi so matrike, za katere je treba med izvajanjem dodeliti pomnilniško lokacijo. Za te vrste nizov je dodeljen pomnilnik na mestu pomnilnika.
- Globalni ali statični nizi: To so tipi nizov, ki se dodelijo v času prevajanja. Tako je za to vrsto nizov vedno dodeljen pomnilnik podatkovnih segmentov.
- Lokalni nizi: Nizi, ki se inicializirajo znotraj funkcije ali bloka, so znani kot lokalni nizi. Te vrste od nizov razporedijo pomnilnik na segmentu nizov.
Niz znakov
V C se strune štejejo za enodimenzionalni niz znakov z ničelnim znakom '\ 0' v zadnjem položaju, ki mu ga prevajalec samodejno doda.
Na primer, "ljubim kodiranje" se šteje za enodimenzionalni niz v c dolžini 14, ki na koncu vključuje znak "\ 0".
Izjava: Obstajata dva načina za razglasitev in inicializacijo matrične črke -
- char str (12) = „ljubim kodo“;
- char str (12) = ('I', '', 'l', 'o', 'v', 'e', '', 'c', 'o', 'd', 'e, ' \ 0 ''); - Tu ga moramo na koncu končati z znakom '\ 0'.
- Char ch (3) = 'modi' - Nezakonita izjava
Vnos in izhod
Medtem ko za vnos in prikaz izhoda v C za matriko char '% c' lahko uporabljate scanf () in printf () funkcijo.
Med izvajanjem istega niza se lahko uporabi "% s", vendar ne ustavi skeniranja ob pojavu prvega znaka praznega prostora.
Program C:
#include
#include
int main()
(
char str(20);
printf(“Enter a string”);
scanf(“%(^\n)”, &str);
printf(“%s”, str);
return 0;
)
Izhod:
Razen funkcij printf in scanf, C ponuja tudi funkcije niza, kot je get () in put (), da med skeniranjem in tiskanjem ignorira bela presledka niza.
Zaključek
Array je vrsta podatkovne strukture, ki se uporablja za shranjevanje homogenih podatkov na sosednjem pomnilnem mestu. Nizi v programiranju se uporabljajo kot predstavitev za različne zapletene strukture podatkov, kot so drevo, kopica itd. C jezik omogoča večdimenzionalne matrike za vse primitivne vrste podatkov. Strune so predstavljene tudi kot zaporedje znakov z null znak '\ 0' kot njegov zadnji znak. Nizi v programiranju omogočajo hitro iskanje in neposreden dostop do elementov matrike z uporabo indeksa, v katerem je element shranjen.
Priporočeni članki
To je vodnik za Niz v programiranju C. Tukaj razpravljamo o uvodu, potrebah matrike, skupaj s funkcijami posredovanja matričnih funkcij pa kot argument vključuje klic po vrednosti, klic po referenci in posredovanje celotnega polja. Če želite izvedeti več, si oglejte tudi naslednje članke -
- 3D matriki na C
- Najboljši C prevajalci
- Vzorci v C programiranju
- Factorial v C
- Vodnik po nizih v C #
- 3D matriki v C ++
- Vodnik po Arrays v PHP
- C Programiranje množenja matrike
- Funkcije matrike PHP | Vrste | Primeri