C++ Struktura s příkladem
V čem je struktura C++?
A STRUKTURA je C++ datová struktura, kterou lze použít ke společnému ukládání prvků různých datových typů. V C++, struktura je uživatelsky definovaný datový typ. Struktura vytváří datový typ pro seskupování položek různých datových typů pod jeden datový typ.
Například:
Předpokládejme, že potřebujete uložit informace o někom, jeho jméno, občanství a věk. Můžete vytvořit proměnné, jako je jméno, občanství a věk, abyste data ukládali samostatně.
V budoucnu však možná budete muset ukládat informace o mnoha osobách. To znamená, že budou vytvořeny proměnné pro různé jednotlivce. Například jméno1, občanství1, věk1 atd. Chcete-li se tomu vyhnout, je lepší vytvořit strukturu.
Kdy použít strukturu?
Zde je několik důvodů pro použití struktury v C++.
- Použijte strukturu, když potřebujete uložit prvky různých datových typů pod jedním datovým typem.
- C++ struktury jsou spíše hodnotovým typem než referenčním typem. Pokud nechcete svá data po vytvoření upravovat, použijte strukturu.
C++ Inicializace struktury
Vytvoření C++ struktura, použijeme klíčové slovo struct, za nímž následuje identifikátor. Identifikátor se stane názvem struktury. Zde je syntaxe pro vytvoření a C++ struktura:
Syntaxe:
struct struct_name
{
// struct members
}
Ve výše uvedené syntaxi jsme použili klíčové slovo struct. Název_struktury je název struktury.
Členy struktury jsou přidány do složených závorek. Tyto členy pravděpodobně patří k různým datovým typům.
Například:
struct Person
{
char name[30];
int citizenship;
int age;
}
Ve výše uvedeném příkladu je Osoba strukturou se třemi členy. Mezi členy patří jméno, občanství a věk. Jeden člen je datového typu char, zatímco zbývající 2 jsou celá čísla, když je struktura vytvořena, paměť není alokována. Paměť je alokována až po přidání proměnné do struktury.
Vytváření strukturních instancí
Ve výše uvedeném příkladu jsme vytvořili strukturu s názvem Osoba. Proměnnou struct můžeme vytvořit takto:
Person p;
P je strukturní proměnná typu Osoba. Tuto proměnnou můžeme použít pro přístup ke členům struct.
Přístup k členům struktury
Pro přístup k členům struct používáme instanci struct a operátor tečka (.). Například pro přístup k věku člena struct Osoba:
p.age = 27;
Získali jsme přístup k členskému věku struct Person pomocí instance struct, str. Poté jsme nastavili hodnotu věku člena na 27.
Příklad 1:
#include <iostream>
using namespace std;
struct Person
{
int citizenship;
int age;
};
int main(void) {
struct Person p;
p.citizenship = 1;
p.age = 27;
cout << "Person citizenship: " << p.citizenship << endl;
cout << "Person age: " << p.age << endl;
return 0;
}
Výstup:
Zde je snímek obrazovky kódu:
Vysvětlení kódu:
- Zahrňte do našeho programu hlavičkový soubor iostream, abyste mohli používat funkce v něm definované.
- Zahrňte jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
- Vytvořte strukturu s názvem Osoba.
- Začátek těla struktury.
- Vytvořte člen struktury s názvem občanství typu celé číslo.
- Vytvořte člen struktury s názvem stáří typu integer.
- Konec těla struktury.
- Zavolejte funkci main(). Programová logika by měla být přidána do těla této funkce.
- Vytvořte instanci struktury Osoba a pojmenujte ji p.
- Nastavte hodnotu občanství člena struct na 1.
- Nastavte hodnotu věku člena struktury na 27.
- Vytiskněte hodnotu občanství člena struktury na konzole spolu s jiným textem.
- Vytiskněte hodnotu stáří členu struktury na konzole spolu s jiným textem.
- Pokud program úspěšně běží, měl by vrátit hodnotu.
- Konec funkce main().
Ukazatele na strukturu
Je možné vytvořit ukazatel, který ukazuje na strukturu. Je to podobné tomu, jak se vytvářejí ukazatele ukazující na nativní datové typy jako int, float, double atd. Všimněte si, že ukazatel v C++ uloží paměťové místo.
Příklad 2:
#include <iostream>
using namespace std;
struct Length
{
int meters;
float centimeters;
};
int main()
{
Length *ptr, l;
ptr = &l;
cout << "Enter meters: ";
cin >> (*ptr).meters;
cout << "Enter centimeters: ";
cin >> (*ptr).centimeters;
cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";
return 0;
}
Výstup:
Zde je snímek obrazovky kódu:
Vysvětlení kódu:
- Zahrňte hlavičkový soubor iostream do našeho programu, abyste mohli používat jeho funkce.
- Zahrňte do našeho programu jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
- Vytvořte strukturu s názvem Délka.
- Začátek těla struktury Délka.
- Vytvořte člen struktury s názvem metry celočíselného datového typu.
- Vytvořte člen struktury s názvem centimetry typu integer.
- Konec těla struktury Délka.
- Zavolejte funkci main().
- Začátek těla funkce main().
- Vytvořte proměnnou ukazatele *ptr a normální proměnnou l typu Délka.
- Uložte adresu proměnné l do našeho proměnná ukazatele.
- Zobrazte na konzole zprávu s žádostí o zadání hodnoty pro proměnné měřiče.
- Přečtěte hodnotu zadanou uživatelem pomocí klávesnice. K měřičům členské funkce se zde přistupuje pomocí proměnné ukazatel.
- Zobrazte na konzole zprávu s žádostí o zadání hodnoty pro proměnné centimetry.
- Přečtěte hodnotu zadanou uživatelem pomocí klávesnice. K členské funkci centimetry se zde přistupuje pomocí proměnné ukazatel.
- Zobrazte hodnoty načtené od uživatele na konzole spolu s jiným textem.
- Program musí po úspěšném provedení vrátit hodnotu.
- Konec těla funkce main().
Struktura jako argument funkce
Strukturu můžete předat funkci jako argument. To se provádí stejným způsobem jako předání normálního argumentu. Proměnné struct lze také předat funkci. Dobrým příkladem je situace, kdy potřebujete zobrazit hodnoty členů struktury. Pojďme si to ukázat:
Příklad 3:
#include<iostream>
using namespace std;
struct Person
{
int citizenship;
int age;
};
void func(struct Person p);
int main()
{
struct Person p;
p.citizenship = 1;
p.age = 27;
func(p);
return 0;
}
void func(struct Person p)
{
cout << " Person citizenship: " << p.citizenship<<endl;
cout << " Person age: " << p.age;
}
Výstup:
Zde je snímek obrazovky kódu:
Vysvětlení kódu:
- Zahrňte soubor záhlaví iostream do našeho souboru. Jeho funkce pak použijeme bez chyb.
- Chcete-li používat jeho třídy, zahrňte do našeho programu jmenný prostor std. Nebudeme muset volat jmenný prostor, abychom mohli používat jeho třídy.
- Vytvořte strukturu s názvem Osoba.
- Začátek těla struktury Osoba.
- Vytvořte člena struct Person. Člen se jmenuje občanství a je typu integer.
- Vytvořte člena struct Person. Člen se jmenuje age a je typu integer.
- Konec těla struktury Osoba.
- Vytvořte funkci, která vezme instanci struct Person, p, jako argument.
- Zavolejte hlavní funkci. { označuje začátek těla funkce main().
- Vytvořte instanci struct Person a pojmenujte ji p.
- Zpřístupněte členskou proměnnou struct občanství pomocí instance struct, p, a přiřaďte jí hodnotu 1.
- Zpřístupněte členskou proměnnou struct age pomocí instance struktury p a přiřaďte jí hodnotu 27.
- Zavolejte funkci a předejte jí instanci struktury Osoba, p, jako argument.
- Funkce musí po úspěšném provedení vrátit hodnotu.
- Konec těla funkce main().
- Vytvořte tělo funkce.
- Začátek těla funkce.
- Získejte přístup k hodnotě občanství člena struct a vytiskněte ji na konzole spolu s jiným textem.
- Získejte přístup k hodnotě věku člena struktury a vytiskněte ji na konzole spolu s jiným textem.
- Konec těla funkce.
Omezení a C++ struktura
Omezení struktur jsou následující:
- S datovým typem struct nelze zacházet jako s vestavěnými datovými typy.
- Operatory jako + - a další nelze použít strukturní proměnné.
- Struktury nepodporují skrývání dat. Ke členům struktury může přistupovat jakákoli funkce bez ohledu na její rozsah.
- Statické prvky nelze deklarovat uvnitř těla konstrukce.
- Konstruktory nelze vytvářet uvnitř struktury.
Shrnutí
- Struktura je datová struktura, která ukládá datové prvky patřící k různým typům.
- Zatímco pole ukládá datové prvky podobného typu, struktura ukládá datové prvky různých typů.
- Struktura by se měla použít, když se neočekává, že by datové prvky změnily hodnotu.
- Ke členům struktury se přistupuje pomocí operátoru tečka (.).
- Musíme vytvořit instanci struct.
- Vytvoření C++ struct, použijeme klíčové slovo struct.
- Ukazatele ukazující na strukturu se vytvářejí podobně, jako se vytvářejí ukazatele, které ukazují na běžné typy.
- Strukturu lze předat funkci jako argument stejným způsobem, jakým se předávají běžné funkce.



