Pole v C ++ - Prohlásit - Inicializovat - Ukazatel na příklady polí

Obsah:

Anonim

Co je to pole?

Pole je datová struktura, která ukládá prvek stejného datového typu postupně. Pole C ++ má pevnou velikost.

Pole můžete vidět jako kolekci proměnných podobného datového typu. Místo deklarace každé proměnné a jejího přiřazení k hodnotě jednotlivě můžete deklarovat jednu proměnnou (pole) a přidat do ní hodnoty různých proměnných. Každá přidaná hodnota do pole je identifikována indexem.

V tomto výukovém programu C ++ se naučíte:

  • Co je to pole?
  • Proč potřebujeme pole?
  • Deklarovat pole v C ++
  • Inicializace pole
  • Druhy polí
    • Jednorozměrné pole
    • Vícerozměrné pole
    • Dvourozměrné pole
    • Tři -Dimenzionální pole
    • Ukazatel na pole
  • Přístup k hodnotám pole
  • Výhody pole v C ++
  • Nevýhody pole v C ++

Proč potřebujeme pole?

Pole jsou velmi důležitá v každém programovacím jazyce. Poskytují pohodlnější způsob ukládání proměnných nebo shromažďování dat podobného datového typu společně, místo aby je ukládali samostatně. Ke každé hodnotě pole bude přistupováno samostatně.

Deklarovat pole v C ++

Deklarace pole v C ++ zahrnuje uvedení typu a počtu prvků, které mají být pole uloženy. Syntax:

type array-Name [ array-Size ];

Pravidla pro deklaraci jednorozměrného pole v C ++.

  • Typ: Typ je typ prvků, které mají být uloženy v poli, a musí to být platný datový typ C ++.
  • Název pole : Název pole je název, který má být přiřazen poli.
  • Velikost pole : Velikost pole je počet prvků, které se mají v poli uložit. Musí to být celé číslo a větší než 0.

Můžete například vytvořit pole s názvem age a uložit věky 5 studentů takto:

int age[5];

Věk pole uloží 5 celých čísel představujících věk různých studentů.

Inicializace pole

Inicializace pole je proces přiřazování / ukládání prvků k poli. Inicializaci lze provést v jednom příkazu nebo jeden po druhém. Všimněte si, že první prvek v poli je uložen v indexu 0, zatímco poslední prvek je uložen v indexu n-1, kde n je celkový počet prvků v poli.

V případě věkového pole bude první prvek uložen v indexu 0, zatímco poslední prvek bude uložen v indexu 4.

Pojďme pomocí věkového pole předvést, jak lze provést inicializaci pole:

int age[5] = {19, 18, 21, 20, 17};

Celkový počet prvků v {} nemůže překročit hodnotu uvedenou v []. Prvek 19 je na indexu 0, 18 na indexu 1, 21 na indexu 2, 20 na indexu 3 a 17 na indexu 4. Pokud neuvedete počet prvků, které mají být uloženy v poli v rámci [], pole bude pouze dostatečně velká, aby pojala prvky přidané do {}. Například:

int age[] = {19, 18, 21, 20, 17};

Výše uvedený příkaz vytvoří přesně stejné pole jako předchozí. Jeden prvek můžete také přiřadit k poli pomocí jeho indexu. Například:

age[3] = 20;

Výše uvedený příkaz uloží hodnotu 20 na index 3 pole s názvem age. To znamená, že 20 budou 4 prvek matice.

Druhy polí

Existují dva typy polí C ++:

  • Jedno dimenzionální pole
  • Vícerozměrné pole
  • Ukazatel na pole

Jednorozměrné pole

Toto je pole, ve kterém jsou datové položky uspořádány lineárně pouze v jedné dimenzi. To se běžně nazývá 1-D pole. Syntax:

datatype array-name[size];
  • Název-pole je název pole.
  • Velikost je počet položek, které mají být uloženy v poli.

Například:

#include using namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };for (int x = 0; x < 5; x++){cout <

Výstup:

Zde je snímek obrazovky s kódem:

Vysvětlení kódu:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  3. Volání funkce main (), do které by měla být přidána logika programu.
  4. Začátek těla funkce main ().
  5. Deklarace pole s názvem age pro uložení 5 celých čísel. Bylo také inicializováno 5 celých čísel.
  6. Vytvořte celočíselnou proměnnou x pomocí smyčky for.
  7. Začátek těla smyčky for.
  8. Pomocí proměnné smyčky x můžete iterovat nad hodnotami stáří pole a vytisknout je na konzole. „\ N“ je znak nového řádku a po každé iteraci se vytiskne do nového řádku.
  9. Konec těla pro smyčku.
  10. Konec těla funkce main ().

Vícerozměrné pole

Toto je pole, ve kterém jsou datové položky uspořádány tak, aby tvořily pole polí. Vícedimenzionální pole může mít libovolný počet dimenzí, ale dvourozměrná a trojrozměrná pole jsou běžná. Syntax:

datatype array-name[d1][d2][d3]… [dn];

Název pole je název pole, které bude mít n rozměrů. Například:

Dvourozměrné pole

2D pole ukládá data do seznamu s 1-D polem. Je to matice s řádky a sloupci. Chcete-li deklarovat 2D pole, použijte následující syntaxi:

type array-Name [ x ][ y ];

Typ musí být platný datový typ C ++. Podívejte se na 2D pole jako tabulku, kde x označuje počet řádků, zatímco y označuje počet sloupců. To znamená, že každý prvek v 2D poli identifikujete pomocí formuláře a [x] [y], kde x je počet řádků a y počet sloupců, do kterých prvek patří.

Zde je příklad, jak inicializovat 2D pole:

int a[2][3] = {{0, 2, 1} , /* row at index 0 */{4, 3, 7} , /* row at index 1 */};

Ve výše uvedeném příkladu máme 2D pole, které lze považovat za matici 2x3. K dispozici jsou 2 řádky a 3 sloupce. K prvku 0 lze přistupovat jako [0] [1], protože je umístěn na křižovatce řádků indexovaných 0 a sloupců indexovaných 1. K prvku 3 lze přistupovat jako [1] [2], protože je umístěn na průsečík řádků indexovaných 1 a sloupců indexovaných 2.

Všimněte si, že jsme jednoduše přidali složené závorky k odlišení různých řad prvků. Inicializace mohla také proběhnout následovně:

int a[2][3] = {0, 2, 1, 4, 3, 7};};

Následující příklad C ++ ukazuje, jak inicializovat a procházet 2D pole:

#include using namespace std;int main(){// a 2x3 arrayint a[3][2] = { {0, 2}, {1, 4}, {3, 7} };// traverse array elementsfor (int i=0; i<3; i++)for (int j=0; j<2; j++){cout << "a[" <

Výstup:

Zde je snímek obrazovky výše uvedeného kódu:

Vysvětlení kódu:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  3. Volání funkce main (), do které by měl být přidán kód.
  4. Začátek těla funkce main ().
  5. Komentář. Kompilátor C ++ to přeskočí.
  6. Deklarace 2D pole 3 řádků a 2 sloupců. Do pole byly také přidány položky.
  7. Komentář. Kompilátor C ++ to přeskočí.
  8. Vytvoření proměnné i pomocí smyčky for. Tato proměnná bude iterovat přes indexy řádků pole.
  9. Vytvoření proměnné j pomocí smyčky pro. Tato proměnná bude iterovat přes indexy sloupců pole.
  10. Začátek těla smyček.
  11. Vytiskněte hodnoty proměnných i a j na konzolu uvnitř hranatých závorek na konzole.
  12. Vytiskněte hodnotu uloženou v indexu [i] [j] pole a.
  13. Konec těla smyček.
  14. Funkce main () by měla vrátit celočíselnou hodnotu, pokud program běží dobře.
  15. Konec těla funkce main ().

Tři -Dimenzionální pole

3D pole je pole polí. Každý prvek v 3D poli je identifikován sadou 3 indexů. Pro přístup k prvkům 3D pole používáme tři pro smyčky. Například:

#includeusing namespace std;void main(){int a[2][3][2] = {{{4, 8},{2, 4},{1, 6}}, {{3, 6},{5, 4},{9, 3}}};cout << "a[0][1][0] = " << a[0][1][0] << "\n";cout << "a[0][1][1] = " << a[0][1][1] << "\n";}

Výstup:

Zde je snímek obrazovky s kódem:

Vysvětlení kódu:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  3. Volání funkce main (), do které by měla být přidána logika programu.
  4. Začátek těla funkce main ().
  5. Deklarace 3D pole s názvem o velikosti 2x3x2. Byly také inicializovány hodnoty pole.
  6. Přístup k položce uložené v indexu [0] [1] [0] pole a její tisk na konzole.
  7. Přístup k položce uložené v indexu [0] [1] [1] pole a její tisk na konzole.
  8. Konec těla funkce main ().

Ukazatel na pole

Ukazatel je proměnná, která obsahuje adresu. Kromě použití ukazatele k uložení adresy proměnné jej můžeme použít k uložení adresy buňky pole. Název pole neustále ukazuje na jeho první prvek. Zvažte níže uvedené prohlášení:

int age[5];

Věk je ukazatel na $ věk [0], adresu prvního prvku pole s názvem věk. Zvažte následující příklad:

#include using namespace std;int main(){int *john;int age[5] = { 19, 18, 21, 20, 17 };john = age;cout << john << "\n";cout << *john;}

Výstup:

Všimněte si, že první hodnota výše uvedeného výstupu může vracet jinou hodnotu v závislosti na adrese přiřazené prvnímu prvku pole v paměti vašeho počítače.

Zde je snímek obrazovky s kódem:

Vysvětlení kódu:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  3. Volání funkce main (), do které by měla být přidána logika programu.
  4. Začátek těla funkce main ().
  5. Deklarace proměnné ukazatele s názvem * john.
  6. Deklarace celočíselného pole s názvem age pro uložení 5 celých čísel. Byly také inicializovány hodnoty celých čísel.
  7. Přiřazení proměnné john hodnotu adresy položky uložené v prvním indexu stáří pole.
  8. Tisk hodnoty proměnné john, což je adresa položky uložené v prvním indexu stáří pole.
  9. Tisk první hodnoty uložené ve stáří pole.
  10. Konec těla funkce main ().

Názvy polí lze použít jako konstantní ukazatele a platí to i naopak. To znamená, že máte přístup k hodnotě uložené v indexu 3 věku pole pomocí * (věk + 3). Například:

#include using namespace std;int main() {// an array of 5 elements.int age[5] = { 19, 18, 21, 20, 17 };int *p;p = age;// output array valuescout << "Using pointer: " << endl;for (int x=0; x<5; x++) {cout << "*(p + " << x << ") : ";cout << *(p + x) << endl;}cout << "Using age as address: " << endl;for (int x = 0; x < 5; x++) {cout << "*(age + " << x << ") : ";cout << *(age + x) << endl;}return 0;}

Výstup:

Zde je snímek obrazovky s kódem:

Vysvětlení kódu:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  3. Volání funkce main () a začátek těla funkce main ().
  4. Komentář. Kompilátor C ++ to přeskočí.
  5. Deklarace pole s názvem age pro uložení 5 celých čísel.
  6. Vytvoření celočíselného ukazatele str.
  7. Přiřazení p hodnotě adresy prvního prvku stáří pole.
  8. Komentář. Kompilátor C ++ to přeskočí.
  9. Vytiskněte na konzole nějaký text.
  10. Vytvořte celé číslo x pomocí smyčky pro. {Označuje začátek těla smyčky for.
  11. Vytiskněte hodnoty x v kombinaci s nějakým jiným textem na konzole.
  12. Vytiskněte na konzole hodnoty * (p + x).
  13. Konec těla pro smyčku.
  14. Vytiskněte na konzole nějaký text.
  15. Vytvořte proměnnou x pomocí smyčky pro. {Označuje začátek těla smyčky for.
  16. Vytiskněte hodnoty x od 0 do 4 spolu s dalším textem.
  17. Vytiskněte hodnoty * (věk + x).
  18. Konec těla smyčky for.
  19. Vrátí hodnotu, pokud program běží úspěšně.
  20. Konec těla funkce main ().

Přístup k hodnotám pole

K prvkům pole se přistupuje pomocí jejich příslušných indexů. Index prvku, ke kterému se má přistupovat, je přidán do hranatých závorek [] bezprostředně za název pole. Například:

int john = age[2];

Ve výše uvedeném příkladu jednoduše konstatujeme, že Johnův věk je uložen na indexu 2 pole s názvem age. To znamená, že Johnův věk je třetí hodnota ve věku pole. Zde je kompletní příklad v C ++, který ukazuje, jak tuto hodnotu získat a vytisknout:

#includeusing namespace std;int main(){int age[5] = { 19, 18, 21, 20, 17 };int john = age[2];cout << "The age of John is:"<

Výstup:

Zde je snímek obrazovky s kódem:

Vysvětlení kódu:

  1. Včetně souboru záhlaví iostream v našem kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Včetně std namespace, aby bylo možné používat jeho třídy a funkce bez jeho volání.
  3. Volání funkce main (), do které by měl být přidán kód.
  4. Začátek těla funkce main ().
  5. Deklarace pole s názvem age pro uložení 5 celočíselných prvků.
  6. Přístup k hodnotě uložené v indexu 2 věku pole a uložení její hodnoty do proměnné s názvem john.
  7. Tisk hodnoty proměnné john na konzoli spolu s dalším textem.

Výhody pole v C ++

Zde jsou výhody / výhody používání Array v C ++:

  • Prvky pole lze snadno procházet.
  • Snadná manipulace s daty pole.
  • K prvkům polí lze přistupovat náhodně.
  • Pole usnadňují optimalizaci kódu; proto můžeme vykonat hodně práce s použitím méně kódu.
  • Snadné třídění dat pole.

Nevýhody pole v C ++

  • Pole má pevnou velikost; proto po inicializaci k němu nemůžeme přidat nové prvky.
  • Přidělení více paměti, než je požadavek, vede k plýtvání paměťovým prostorem a menší alokace paměti může způsobit problém.
  • Počet prvků, které mají být uloženy v poli, musí být předem znám.

souhrn

  • Pole je datová struktura, která ukládá prvky stejného datového typu.
  • Prvky pole se ukládají postupně.
  • Prvky pole jsou označeny pomocí příslušných indexů. První prvek je na indexu 0, zatímco poslední prvek je na indexu n-1, kde je celkový počet prvků pole.
  • Deklarace pole zahrnuje definování datových typů prvků pole a také počet prvků, které mají být v poli uloženy.
  • Jednorozměrné pole ukládá prvky postupně.
  • Dvourozměrné pole ukládá prvky do řádků a sloupců.
  • Trojrozměrné pole je pole polí.
  • Prvky lze do pole přidat pomocí jejich indexů.
  • K prvkům polí se přistupuje pomocí jejich indexů.
  • Vícedimenzionální pole má více než jednu dimenzi.
  • Název pole ukazuje na jeho první prvek.
  • Pole mají pevnou velikost, což znamená, že po inicializaci nelze do pole přidat nové prvky.