Úvod do polí v programování v C

Pole je typ datové struktury, který se používá k ukládání homogenních dat na sousedních paměťových místech.

Index zde označuje umístění prvku v poli. Představme si, že A (L) je název pole, kde „A“ je název proměnné a „L“ je délka pole, tj. Počet prvků přítomných v poli.

Potom A (i) představuje prvek na této „i + 1“ pozici v poli. Například:

A (6) = 72 znamená prvek na 6 + 1 místě pole.

Potřeba Array

Pomáhá reprezentovat velké množství prvků pomocí jediné proměnné. Rovněž usnadňuje přístup k prvku rychleji k uložení do paměti pomocí indexu pole, které představuje umístění prvku v poli.

Přístup k elementům v poli

Přístup k jakémukoli prvku v poli je mnohem jednodušší a lze jej provést ve složitosti O (1)

Indexy pole začínající od 0 do -1, 0 označuje první prvek pole a -1 označuje poslední prvek pole. Podobně -2 označuje poslední, ale jeden prvek pole.

Například:

Nechť A je matice o délce 7 a člověk potřebuje přístup k prvku s hodnotou 94, pak musí použít A (3).

Syntax

printf (”% d”, A (3)) - Toto vytiskne 94, kde 3 je index, ke kterému potřebujeme přistupovat a a je proměnná pole.

Prohlášení o poli v C

V C musí být pole řádně deklarováno před použitím s jeho názvem a délkou. Existují tři syntaxe, ve kterých můžeme deklarovat pole v programu ac

Syntaxe 1

int A (7) = (21, 56, 32, 52, 63, 12, 48) - Deklarování délky a prvků pole

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ýstup:

Syntaxe 2

int A () = (21, 56, 32, 52, 63, 12, 48) - Deklarování délky prvků pole

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ýstup:

Syntaxe 3

int A (7); - Deklaruje pouze délku pole.

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ýstup:

Syntaxe 4

int A (7) = (0); - Deklarování délky pole a prvku, když je prvek ve všech pozicích stejný.

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ýstup:

Syntaxe 5

Deklarování délky pole a také hodnota prvků, kde jsou všechny hodnoty stejné

Případ 1 - int a (3) = ((0..1) = 3) -

Případ 2 - int a (3) = (0); -

Syntaxe 6

int * a; - Deklarování pole jako ukazatele na umístění prvků.

Žádný index mimo vázanou kontrolu

V případě, že se jeden pokusí o přístup k prvku mimo hranice pole, kompilátor místo chyby nezobrazí chybu, ale vygeneruje varování. A také poskytuje neočekávaný výstup.

Příklad

a (4) = (2, 3, 4, 5);

Pokud píšeme printf (a (4));

Výstup bude 225263545 - neočekávaný

Také v C není kompilátor chyba při inicializaci pole s více číslovými prvky, než je zadaná délka v deklaraci. Například níže uvedený program místo 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ýstup:

Načítání prvků v poli

Získání prvků pole a jejich tisk je velmi snadný úkol. Vyžaduje pouze jednu smyčku pro tisk n prvků pole. složitost takového programu je tedy O (n).

Například - int int (7) = (23, 56, 8, 944, 58, 24, 5);

Program pro tisk prvků pole 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ýstup:

Vícerozměrné pole

Jazyk C také umožňuje vícerozměrná pole, tj. Pole, která pojmou prvky v řádcích i sloupcích.

Prohlášení

Při deklarování vícerozměrného pole je nutné zadat délku všech rozměrů kromě levého, protože to je volitelné.

Příklad

Deklarování pole níže způsobí chybu, protože nejsou zadány jiné rozměry než většina vlevo.

Int a () () (2) = (

((1, 2), (3, 4)),

((5, 6), (7, 8))

)

Příklad

Níže je uvedena jedna ze správné syntaxe pro deklaraci vícerozměrného pole v C.

Int a () (3) = (

(52, 56, 86), (44, 6, 21)

)

Předávání pole jako parametru ve funkci

Někdy při vytváření funkce vyžadujeme, aby funkce používala řadu proměnných, které potřebuje vzít z různých funkcí. Tehdy musí být tyto proměnné předány jako parametr pro toto volání funkce. Ale nakonec, jak se počet proměnných zvyšuje, musíme použít matici k předání proměnné, nebo v případě, že je třeba provést některé operace na polích, pak také musí vyvstat potřeba předat celé pole jako parametr ve funkci. Pro předání pole jako proměnné funkci:

1. Výzva podle hodnoty

V tomto typu volání metody jsou skutečné hodnoty pole zkopírovány do formálního parametru, kde jsou oba uloženy na jiném místě, takže jakákoli změna provedená v hodnotách se neprojeví ve funkci.

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ýstup:

2. Volejte odkazem

Při volání funkce, když namísto předávání skutečných hodnot pole je odkaz na proměnnou předán jako parametr, pak je znám jako volání odkazem.

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ýstup:

3. Předání celé sady jako argumentu

Např. - Nechť arr je pole 7 elements.disp je funkce pro zobrazení prvků pole, které mají 2 argumenty, první, který ukazuje na první umístění pole a druhý na délku pole (var2). je předána proměnná arr, která ukazuje na umístění prvního prvku pole a délky, 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;
)

Výstup:

Přidělení paměti pole

Reprezentace paměti v jazyce C se považuje za rozdělenou do 5 oddílů, jak je uvedeno níže: -

  1. Textový segment
  2. Inicializovaný segment dat
  3. Neinicializovaný segment dat
  4. Zásobník
  5. Halda

Data, halda a zásobník jsou tři segmenty, do kterých lze přiřadit matici paměti k uložení jejích prvků, stejně jako ostatní proměnné.

  1. Dynamická pole: Dynamická pole jsou pole, která vyžadují umístění paměti, aby byla přidělena za běhu. Pro tyto typy polí je paměť přidělena v umístění paměti haldy.
  2. Globální nebo statická pole: Jedná se o typ polí, která jsou přidělena v době kompilace. Pro tyto typy polí je tedy vždy přidělena paměť datových segmentů.
  3. Local Arrays: Pole, která se inicializují uvnitř funkce nebo bloku, se nazývají místní pole. Tyto typy polí získají paměť přidělenou na segment zásobníku.

Character Array

V C jsou řetězce považovány za jednorozměrné pole znaků s nulovým znakem '\ 0' na své poslední pozici, které k němu kompilátor automaticky přidá.

Například „miluji kódování“ je považováno za jedno dimenzionální pole v délce 14, včetně znaku '\ 0' na konci.

Prohlášení: Existují 2 způsoby, jak deklarovat a inicializovat pole znaků-

  1. char str (12) = „miluji kód“;
  2. char str (12) = ("I", "", "l", "o", "v", "e", "", "c", "o", "d", "e" "\ 0 ''); - Tady to musíme zakončit znakem '\ 0' na konci.
  3. Char ch (3) = 'modi' - Neplatné prohlášení

Převzetí vstupu a výstupu

Při přijímání vstupu a zobrazování výstupu v C pro znakové pole '% c' lze použít funkci scanf () a printf ().

Při implementaci totéž pro řetězce lze použít „% s“, ale zastaví skenování výskytu prvního znaku mezery.

Program C:

#include
#include
int main()
(
char str(20);
printf(“Enter a string”);
scanf(“%(^\n)”, &str);
printf(“%s”, str);
return 0;
)

Výstup:

Kromě funkcí printf a scanf poskytuje C také řetězcové funkce, jako je get () a puts (), které při skenování a tisku ignorují prázdné mezery.

Závěr

Pole je typ datové struktury, který se používá k ukládání homogenních dat na souvislé paměťové místo. Pole v programování se používají jako reprezentace pro různé složité datové struktury, jako je strom, halda atd. Jazyk C umožňuje vícerozměrná pole pro všechny primitivní datové typy. Řetězce jsou také reprezentovány jako pole znaků s nulovým znakem '\ 0' jako jeho poslední znak. Pole v programování umožňují rychlé vyhledávání a přímý přístup k prvkům pole pomocí indexu, kde je prvek uložen.

Doporučené články

Toto je průvodce poli v programování C. Zde diskutujeme Úvod, Potřeba pole, spolu s Předávání funkcí pole zahrnuje argument podle hodnoty Call by Value, Call by Reference a Passing celé pole. Další informace naleznete také v následujících článcích -

  1. 3D pole v C
  2. Nejlepší kompilátory C
  3. Vzory v programování C
  4. Factorial in C
  5. Průvodce poli v C #
  6. 3D pole v C ++
  7. Průvodce po polích v PHP
  8. C Programovací násobení matic
  9. PHP Array Funkce | Typy | Příklady

Kategorie: