Úvod do polí v programovaní v C
Pole je typ dátovej štruktúry, ktorá sa používa na ukladanie homogénnych údajov na priľahlých miestach pamäte.
Index tu označuje umiestnenie prvku v poli. Predstavme si, či A (L) je názov poľa, kde „A“ je názov premennej a „L“ je dĺžka poľa, tj počet prvkov prítomných v poli.
Potom A (i) predstavuje prvok na tejto „i + 1“ pozícii v poli. Napríklad:
A (6) = 72 znamená prvok na 6 + 1 mieste poľa.
Potreba poľa
Pomáha reprezentovať veľké množstvo prvkov pomocou jednej premennej. Uľahčuje tiež prístup k prvkom v pamäti, ktorý je ľahko uložiteľný pomocou indexu poľa, ktorý predstavuje umiestnenie prvku v poli.
Prístup k prvkom v poli
Prístup k akémukoľvek prvku v poli je omnoho ľahší a dá sa urobiť v zložitosti O (1)
Indexy poľa začínajúce od 0 do -1, 0 označujú prvý prvok poľa a -1 označujú posledný prvok poľa. Podobne -2 označuje posledný, ale jeden prvok poľa.
Napríklad:
Nech A je matica s dĺžkou 7 a človek musí mať prístup k prvku s hodnotou 94, potom musí použiť A (3).
syntax
printf (”% d”, A (3)) - Týmto sa vytlačí 94, kde 3 je index, ku ktorému potrebujeme pristupovať a a je premenná poľa.
Vyhlásenie o aréne v C
V C musí byť pole správne deklarované pred použitím s jeho menom a dĺžkou. Existujú tri syntaxe, v ktorých môžeme v programe ac deklarovať polia
Syntax 1
int A (7) = (21, 56, 32, 52, 63, 12, 48) - Deklarovanie dĺžky a prvkov poľa
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;
)
Výkon:
Syntax 2
int A () = (21, 56, 32, 52, 63, 12, 48) - Deklarovanie dĺžky prvkov poľa
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;
)
Výkon:
Syntax 3
int A (7); - Deklaruje sa iba dĺžka poľa.
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;
)
Výkon:
Syntax 4
int A (7) = (0); - Deklarovanie dĺžky poľa a prvku, keď je prvok na všetkých pozíciách rovnaký.
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;
)
Výkon:
Syntax 5
Deklaruje sa dĺžka poľa a tiež hodnota prvkov, kde sú všetky hodnoty rovnaké
Prípad 1 - int a (3) = ((0..1) = 3) -
Prípad 2 - int a (3) = (0); -
Syntax 6
int * a; - Deklarovanie poľa ako ukazovateľa umiestnenia prvkov.
Žiadny index mimo kontrolu viazanosti
V prípade, že sa niekto pokúsi získať prístup k prvku mimo hraníc poľa, kompilátor namiesto toho nezobrazí chybu, ale vygeneruje varovanie. A tiež poskytuje neočakávaný výstup.
príklad
a (4) = (2, 3, 4, 5);
Ak napíšeme printf (a (4));
Výstup bude 225263545 - neočakávaný
V C tiež kompilátor nedá chybu inicializovať pole s viacerými číslovými prvkami, ako je špecifikovaná dĺžka vo vyhlásení. Napríklad nižšie uvedený program namiesto toho neukazuje chybu.
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;
)
Výkon:
Načítanie prvkov v poli
Načítanie prvkov poľa a ich tlač je veľmi ľahká úloha. Vyžaduje iba jednu slučku na tlač n prvkov poľa. zložitosť takého programu je teda O (n).
Napríklad: int (7) = (23, 56, 8, 944, 58, 24, 5);
Program na tlač prvkov poľa 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;
)
Výkon:
Viacrozmerné pole
Jazyk C tiež umožňuje viacrozmerné polia, tj polia, ktoré môžu obsahovať prvky v riadkoch aj stĺpcoch.
vyhlásenie
Pri deklarovaní multidimenzionálneho poľa je potrebné špecifikovať dĺžku všetkých rozmerov okrem ľavého, pretože to je voliteľné.
príklad
Deklarovanie poľa týmto spôsobom bude mať za následok chybu, pretože nie sú špecifikované iné rozmery ako najviac vľavo.
Int a () () (2) = (
((1, 2), (3, 4)),
((5, 6), (7, 8))
)
príklad
Nižšie je uvedená jedna zo správnej syntaxe pre deklarovanie viacrozmerného poľa v C.
Int a () (3) = (
(52, 56, 86), (44, 6, 21)
)
Predávanie poľa ako parametra vo funkcii
Niekedy pri vytváraní funkcie požadujeme, aby funkcia používala niekoľko premenných, ktoré potrebuje z rôznych funkcií. V tom čase musia byť tieto premenné odovzdané ako parameter pre toto volanie funkcie. Ale nakoniec, keď sa počet premenných zvyšuje, musíme použiť pole na odovzdanie premennej alebo v prípade, že je potrebné vykonať niektoré operácie na poliach, potom je tiež potrebné, aby sa odovzdalo celé pole ako parameter vo funkcii. Na odovzdanie poľa ako premennej funkcii:
1. Výzva podľa hodnoty
Pri tomto type volania metódy sa skutočné hodnoty poľa skopírujú do formálneho parametra, kde sú obidve uložené na inom mieste, takže žiadna zmena vykonaná v hodnotách sa neodzrkadlí vo funkcii.
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;
)
Výkon:
2. Volanie odkazom
Pri volaní funkcie, keď sa namiesto odovzdávania skutočných hodnôt z poľa odovzdáva odkaz na premennú ako parameter, potom sa nazýva odkaz na odkaz.
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;
)
Výkon:
3. Absolvovanie celého poľa ako argumentu
Napr. - Nechajte arr je pole 7 elements.disp je funkcia na zobrazenie prvkov poľa, ktoré prijímajú 2 argumenty, z ktorých prvá ukazuje na prvé umiestnenie poľa a druhá dĺžka poľa (var2). premenná funkcia arr, ktorá ukazuje na umiestnenie prvého prvku poľa a dĺžky, tj 7, je odovzdaná.
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;
)
Výkon:
Priradenie pamäte poľa
Reprezentácia pamäte v jazyku C sa považuje za rozdelenú do 5 oddielov, ako je uvedené nižšie: -
- Textový segment
- Inicializovaný segment údajov
- Neinicializovaný segment údajov
- Stoh
- halda
Dáta, halda a zásobník sú tri segmenty, do ktorých je možné alokovať polia na ukladanie jej prvkov, rovnako ako ostatné premenné.
- Dynamické polia: Dynamické polia sú polia, ktoré si vyžadujú umiestnenie pamäte v runtime prostredí. Pre tieto typy polí je alokovaná pamäť v mieste haldy.
- Globálne alebo statické polia: Jedná sa o typ polí, ktoré sú alokované v čase kompilácie. Pamäť dátových segmentov je teda vždy vyhradená pre tieto typy polí.
- Lokálne polia: Polia, ktoré sa inicializujú vo vnútri funkcie alebo bloku, sa nazývajú miestne polia. Tieto typy polí získavajú pamäť vyhradenú pre segment zásobníka.
Character Array
V C sú reťazce považované za jednorozmerné pole znakov s nulovým znakom '\ 0' na svojej poslednej pozícii, ktoré k nemu kompilátor automaticky pridá.
Napríklad „milujem kódovanie“ sa považuje za jedno dimenzionálne pole v dĺžke 14 vrátane znaku „\ 0“ na konci.
Vyhlásenie: Existujú 2 spôsoby, ako deklarovať a inicializovať pole znakov-
- char str (12) = „milujem kód“;
- char str (12) = ("Ja", "", "l", "o", "v", "e", "", "c", "o", "d", "e", \ 0 ''); - Tu to musíme zakončiť znakom '\ 0' na konci.
- Char ch (3) = 'modi' - Nezákonné vyhlásenie
Pri vstupe a výstupe
Pri vstupe a zobrazovaní výstupu v C pre znakové pole '% c' možno použiť funkciu scanf () a printf ().
Pri implementácii toho istého pre reťazce sa dá použiť „% s“, ale zastaví sa skenovanie výskytu prvého znaku medzery.
Program C:
#include
#include
int main()
(
char str(20);
printf(“Enter a string”);
scanf(“%(^\n)”, &str);
printf(“%s”, str);
return 0;
)
Výkon:
Okrem funkcií printf a scanf, C poskytuje aj reťazcové funkcie, ako napríklad get () a puts (), ktoré ignorujú medzery počas skenovania a tlače.
záver
Pole je typ dátovej štruktúry, ktorá sa používa na ukladanie homogénnych údajov na súvislé miesto v pamäti. Polia v programovaní sa používajú ako reprezentácia pre rôzne zložité dátové štruktúry, ako sú strom, halda atď. Jazyk umožňuje viacrozmerné polia pre všetky primitívne typy údajov. Reťazce sú tiež reprezentované ako pole znakov s nulovým znakom '\ 0' ako jeho posledným znakom. Polia v programovaní umožňujú rýchle vyhľadávanie a priamy prístup k prvkom poľa pomocou indexu, v ktorom je prvok uložený.
Odporúčané články
Toto je príručka pre polia v programovaní C. Tu diskutujeme o Úvode, Potreby poľa, spolu s funkciami Passing Array, vrátane argumentu Call by Value, Call by Reference a Passing celé pole. Ďalšie informácie nájdete aj v nasledujúcich článkoch -
- 3D polia v C
- Najlepšie kompilátory C.
- Vzory v programovaní C
- Factorial in C
- Sprievodca poliami v jazyku C #
- 3D polia v C ++
- Sprievodca poliami v PHP
- C násobenie programovacej matice
- Funkcie PHP poľa Druhy Príklady