www.amapro.cz & David Bazala [Programování]

Otevře webové stránky AmaPro


Otevře hlavní stránku společnosti AmaPro
Internetové stránky určené pro studenty středních a vysokých odborných škol.


amapro.cz/odkazy Projekt eliminuje vyhledávání klíčových slov na komerčních stránkách a v e-schopech.



Nový projekt AmaPro

typedef

 

Příkaz typedef je standardní příkaz Céčka, který nevytváří žádný nový objekt, ale často se používá pro zpřehlednění zdrojových kódů. Typedef předefinuje jméno datového typu  nebo strukturu na námi zvolené znakové označení. Vytváří jakési synonyma pro některé opakující se „příliš krkolomné“ příkazy.

 

Jednoduchá konstrukce pro typedef:

 

typedef int nahrada;

nahrada X;

 

Tato konstrukce definuje pouze nový datový s názvem nahrada, ale tento nový typ má zcela stejné vlastnosti jako typ int. Dále deklarovaná A proměnná je datového typu nahrada, který je synonymem typu int.

 

 

Praktičtější konstrukce pro typedef:

 

typedef struct

 {

 int a,b,c;

} nahrada;

nahrada  X;

 

Tato konstrukce definuje novou strukturu se synonymem nahrada, která obsahuje tři prvky A,B, C.  Jednoduchou deklaraci nahrada X, máme deklarován  (tedy i alokovánu paměť) přístup k prvkům X.a, X.b a X.c. U obsáhlých struktur či databází výhody předefinování jistě oceníme.

 

 

 

PŘÍKLAD: typedef_1

typedef int nahrada;                           //vytvoření synonyma nahrada s vlastnostmi int

nahrada cislo=10;                               //alokace a inicializace proměnné jako nahrada (int)

cout<<cislo;                                        //výstupní proud, vstupuje synonymní typ nahrada (int)

getchar();                                             //čekání na entr

return 0;                                                //výstup z konzolové aplikace

 

Program demonstruje deklaraci nového názvu pro datový typ int. Příkaz typedef říká, že vytváří nový datový typ, který se bude jmenovat nahrada. Bude tedy ze skupiny int, char, double, float …. Příkaz typedef ve svém výpisu ukazuje na int a to znamená, že nový datový typ nahrada má zcela stejné vlastnosti jako int. Typedef tedy nevytváří nic nového, ale pouze synonymum nahrada pro int. Dále je deklarovaná proměnná číslo jako nahrada a vstupuje do cout jako nahrada, ale překladač ví že je to int.

 

 

PŘÍKLAD: typedef_2

char retez[]="ahoj pavle";                 //alokace a inicializace retez jako pole charů

typedef char *ukazchar;                    //vytvoření synonyma ukazchar jako pointr na char

ukazchar ukaznovy;           //deklarace ukaznovy jako pointr na char odvozeny od synonyma ukazchar

ukaznovy=retez;                                 //inicializace pointru ukaznovy pointrem retez

cout<<retez<<endl;           //do výstupního proudu vstupuje pointer retez

cout<<ukaznovy<<endl;                   //do výstupního proudu vstupuje pointer ukaznovy (je synonymní)

getchar();                                             //čekání na entr

return 0;                                                //výstup z konzolové aplikace

 

Program demonstruje využití příkazu typedef pro vytvoření nového názvu datového typu s názvem ukazchar. Opět se nejedná o vytvoření nějakého nového objektu, ale pouze vytvoření synonyma pro ukazatele na char. Pro demonstraci je deklarována proměnná retez jako posloupnost charů. Dále je deklarována proměnná ukaznovy, která je datového typu ukazchar, což je v podstatě ukazatel na char. Proměnná ukaznovy je inicializována ukazatelem na první znak v poli retez. Dále je do funkce cout poslán jak vlastní retez, tak i ukaznovy. Obě proměnné vypíší to samé, což je důkaz toho, že nový datový typ ukazchar není nic jiného než ukazatel na char.

 

PŘÍKLAD: typedef_3

typedef char *ukchar;                        //vytvoření synonyma ukpole jako pointr na char

char A[]="Ahoj Pavle";                     //alokace a inicializace A jako pole charů

ukchar *uknovy;                                //deklarace uknovy jako pointr na char odvozeny od synonyma ukchar

char *uk1;                                            //deklaruje uk1 jako pointr na char na A

uk1=A;                                                 //inicializuje pointr uk1 pointrem A

uknovy=&uk1;                                    //inicializuje pointr uknovy adresou pointru uk1 (uk1 již ukazuje na A)

cout<<*uknovy;                                 //do výstup. proudu posílá hodnotu na adrese uknovy (uknovy ukaz. na uk1)

getchar();                                             //čekání na entr

return 0;                                                //výstup z konzolové aplikace

 

Program demonstruje deklarace ukazatele na ukazatele s předdefinovaným názvem datového typu. Nejdříve je předdefinován nový datový typ ukchar jako ukazatel na char. Dále alokace pole charů A. Vytvoříme si novou proměnnou uknovy jako ukazatele na nový typ ukchar. Jde tedy o ukazatele na ukazatele. Dále deklarujeme uk1 jako ukazatele na char, který inicializujeme ukazatelem na první znak  A pole charů. Syntaxe uknovy=&uk1; provede předání adresy uk1 (skutečné adresy) do obsahu adresy uknovy. Uknovy pak ukazuje na skutečnou adresu uk1, kde je teprve informace o adrese prvního Byte v A poli charů. Pokud chceme touto krkolomnou cestou (tedy přes uknovy) vstupovat do funkce cout, musíme použít cout<<*uknovy; Do funkce cout vstupuje obsah 4 Byte (rozložená adresa), na kterou ukazuje uknovy. A ony 4 Byte jsou pouze ukazatele na první znak v A poli charů.

 

 

 



Abecední seznam všech článků Vyhledání pojmů ve článcích




Databáze ikon
Ikony a malé obrázky pro tlačítka či jiné použití
datove_zdroje/icony/icony.php
Mikroprocesory IV.
Varianty návrhu číslicových řídících systémů realizovaných jako sekvenční obvody.
programovani/procesory_4
Odkazník o programování
Rejstřík klíčových slov pro programování ve vyhledávačích.
programovani/programovani.php
Animované obrázky
Animované gify a malé obrázky pro všeobecné využití.
datove_zdroje/animace
Zapojení kabelů
Popis vývodů a křížení různých propojovacích kabelů
konektory.php
Hybridní počítače
Počítače, jejichž základem je standardní analogová počítací síť.
knihy/hybridni_pocitace
Databáze obrázků
Malé a velké obrázky, podlkady, tlačítka, okrasné čáry a pod.
datove_zdroje/obrazky
Mikropočítače
Seznámení s obecnou problematikou počítačů a mikropočítačů.
programovani/mikropocitace
Procesory a mikroprocesory
Obecný úvod do základů mikroprocesorové techniky, architektury počítačů
knihy/mikroprocesory/obsah_mikro2.php
Otevře stránky Fulltextové vyhledávání na celém serveru
Digitalizované odborné knihy
Velká encyklopedie pojmů a zkratek
Česko - anglicko - německý technický slovník
Klasický katalog firem, služeb a stránek
OnLine překladač  vět a textů (nepoužívá Google)
Stránky pro chvíle oddechu od studia, relaxace
Katalog českých firem dle technologií
Internetový odkazník
Otevře hlavní stranu pro oddíl programování




 Wikipedie   Seznam stránek   Kapitoly témat   Významné servery   Klíčová slova 








Otevře hlavní stranu společnosti AmaPro

Všechna práva vyhrazena. Určeno jen pro osobní využití. Bez předchozího písemného souhlasu správce www.amapro.cz je zakázána jakákoli další publikace, přetištění nebo distribuce jakéhokoli materiálu nebo části materiálu zveřejněného na www.amapro.cz a to včetně šíření prostřednictvím elektronické pošty. Články, jejichž přímým autorem není amapro.cz lze publikovat pouze se souhlasem jejich majitelů či administrátoru příslušného webu.