Ú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: -

  1. Textový segment
  2. Inicializovaný segment údajov
  3. Neinicializovaný segment údajov
  4. Stoh
  5. 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é.

  1. 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.
  2. 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í.
  3. 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-

  1. char str (12) = „milujem kód“;
  2. char str (12) = ("Ja", "", "l", "o", "v", "e", "", "c", "o", "d", "e", \ 0 ''); - Tu to musíme zakončiť znakom '\ 0' na konci.
  3. 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 -

  1. 3D polia v C
  2. Najlepšie kompilátory C.
  3. Vzory v programovaní C
  4. Factorial in C
  5. Sprievodca poliami v jazyku C #
  6. 3D polia v C ++
  7. Sprievodca poliami v PHP
  8. C násobenie programovacej matice
  9. Funkcie PHP poľa Druhy Príklady

Kategórie: