Typy dat v "C". Programování v jazyce C "

Datové typy v C jsou třídou dat, jejichž hodnoty mají podobné charakteristiky. Typ určuje interní reprezentaci dat v paměti. Základní datové typy: logické, celé číslo, plovoucí bod, řetězec, ukazatele.

Typizace

Při dynamickém psaní je proměnná přiřazena k typu v okamžiku inicializace. Ukazuje se, že proměnná v různých částech kódu může mít různé typy. Dynamické psaní je podporováno Java Script, Python, Ruby, PHP. Statické psaní je opakem dynamického. Když je proměnná deklarována, získá typ, který se v budoucnosti nezmění. Jazyky C a C ++ jsou přesně to. Tato metoda je nejvhodnější pro psaní složitého kódu a ve fázi kompilace jsou vyloučeny mnohé chyby.


Jazyky jsou neformálně rozděleny do výrazně typizovaných a slabě typirovaných. Silné psaní předpokládá, že kompilátor bude generovat chybu, pokud jsou očekávané a skutečné typy odlišné. x = 1 + "2"; //error - můžete přidat příklad špatného psaní znaků. x = 1 + "2"; //3 Kontroly shody typu jsou prováděny bezpečnostním systémem. Chyba při psaní dochází například při pokusu o použití čísla jako funkce. Jsou zde nenavázané jazyky. Na rozdíl od zadaného typu, umožňují provádět jakékoliv operace na každém objektu.

Třídy paměti

Proměnné, bez ohledu na jejich typ, mají svůj rozsah a dobu existence.
Třídy paměti:
  • auto;
  • statické;
  • externí;
  • registrovat.
  • Všechny proměnné v jazyce C provýchozí nastavení jsou místní. Mohou být použity pouze v rámci funkce nebo bloku. Po dokončení funkce je jejich hodnota zničena. Statická proměnná je také lokální, ale mimo její blok může mít jinou hodnotu a mezi volání funkcí zůstává hodnota zachována. Externí proměnná je globální. Je k dispozici v libovolné části kódu i v jiném souboru. Proměnná registru doporučuje, aby kompilátor ukládal hodnoty v paměti RAM. Specifika datových typů v C nemusí být specifikována v následujících případech:
  • Pokud se předpokládá použití této konkrétní třídy paměti, nebudou všechny proměnné uvnitř bloku proměnné, pak není určen automatický specifikátor.
  • Všechny funkce deklarované mimo blok nebo funkci jsou ve výchozím nastavení globální, takže externí specifikátor je volitelný.
  • Základní typy

    Určuje int, char, float a double pro specifikaci jednoduchých typů. Proměnné mohou být nahrazeny nepodepsaným modifikátorem, podepsaným, znaménkem, krátkým, dlouhým, dlouhým.

    Ve výchozím nastavení jsou všechna čísla podepsaná a mohou být v rozmezí pouze kladných čísel. Chcete-li zadat znakovou proměnnou char jako znaménko, je zapsán podepsaný znak. Dlouhé, dlouhé a krátké ukazují, kolik paměťového místa je uloženo pro uložení. Většina - dlouhá, nejméně - krátká. Char je nejmenší typ dat v jazyce C. Chcete-li uložit hodnoty, přidělí se pouze 1 bajt paměti. Typy proměnných znaků jsou obvykle přiřazeny symboly, zřídka - čísla. Symbolické hodnoty jsou v uvozovkách. char a = a "; char b = 2; Typ int ukládá celá čísla, jehovelikost není definována trvá až 4 bajty paměti, v závislosti na architektuře počítače. int a = 12; Výslovná konverze nepodepsané proměnné je dána následujícím způsobem: unsigned int a = 12; Implicitní vypadá takto: int a = 12u; Plovoucí a dvojité definování čísel s tečkou. Čísla float jsou reprezentována jako -2,3 nebo 334. Pro větší přesnost se používá dvojitý - po oddělovači celé a částečné části je více číslic. Tento typ vyžaduje více úložného prostoru než plovoucí.
    dvojité a = 124567; Void má prázdnou hodnotu. Definuje funkce, které nevracejí nic. Tento specifikátor určuje prázdnou hodnotu v argumentech metody. Indikátory, které mohou akceptovat jakýkoli typ dat, jsou rovněž označeny jako neplatné.

    Logický typ Bool

    Používá se ke kontrole podmínek a cyklů. Má pouze dva významy:
  • pravdu;
  • leží.
  • Booleovské hodnoty lze převést na hodnoty int. Pravda je ekvivalentní jedné, falešné - nula. Konverze typů je poskytována pouze mezi bool a int, jinak kompilátor vygeneruje chybu. int x = 123; if (x) {//Error: "Nelze implicitně převést typ 'int' na 'bool'"}; pokud (x! = 0) //C # cesta {}

    Lines and arrays

    Pole patří k komplexním typům dat v C. MP nepracuje s řetězci stejně jako Javascript nebo Ruby. Ve skupině C jsou všechny řádky pole symbolických prvků. Řádky končí nulovým bajtem "".

    Oznámení C linky: char b [] = {'s', t, r, i, n, g a}; Linka je také oznámena v stručné podobě. char a [] = "řetězec"; a

    === b

    ; //'t' Celá čísla nebo znaková pole jsou deklarována stejným způsobem: typnázev proměnné dat [velikost pole]. int a [100]; char b
    ; Podobná syntaxe označuje, že velikost hodnoty int nesmí být větší než 100 znaků. Při vytváření pole je v paměti uložen určitý počet buněk pro uložení položek. Proto je paměť dynamicky přidělena do datových polí procesů neznámé dimenze nebo má být změněna. Multidimenzionální pole jsou deklarována takto: int a

    ; Při vytváření tohoto pole je v tomto případě přiděleno místo pro ukládání dvou vnořených polí, které se skládají ze tří prvků. Inicializace vícerozměrného pole: int a

    = {123 456}; a

    ; //[1, 2, 3] a
    ; //[4, 5, 6]

    Odkazové ukazatele

    Ukazatele jsou hlavní rys jazyka a nabízejí skvělé možnosti pro práci s pamětí. Přenášejí informace o umístění jiné proměnné v paměti. Před použitím jsou jako jiné proměnné označeny jako typ * ukazatel. Typ - typ proměnné, ukazatel - název ukazatele.
    Pro zadání ukazatele na hodnotu jiné proměnné se používají odkazy. Přenášejí adresu proměnné a používají se jako bezpečný index. int a = 2; int * ukazatel; ukazatel = & a; Odkazy umožňují pracovat s ukazatelem jako s objektem.
    V tomto případě & amp; vrátí 0x7340cad2a25c, * ukazatel - 2, ale ukazatel bez "*" - 0x7340cad2a25c. Změnou hodnoty nezměníme její adresu, takže ukazatel bude odkazovat také na 0x7340cad2a25c, ale změní její význam. Ukazatel na jiném ukazateli je deklarován ve tvaru int w = 100; int * x = & w; int ** z = & amp; x; Ukazatel na poli pracuje trochu jinak.int c
    = [1, 2, 3, 4, 5], * a; Deklarovali jsme množinu celých čísel a index int a. V tomto případě ukazatel nenaznačuje samotné pole, ale pouze jeho první prvek. Tedy a = c; a a = & c ; //1 jsou vzájemně ekvivalentní. Nyní můžete odkazovat na třetí prvek pole pomocí výrazu * (a + 3) nebo
    ; Ve výše uvedeném příkladu lze poznamenat, že přidávání ukazatelů funguje jinak. K nim mohou být použity různé aritmetické operace. Ukazatel na pole je označen následujícím způsobem: char (* pa) ; Ale řada ukazatelů vypadá takto: char * pc ;

    Struktury

    Struktura - Typ dat v jazyce C, který usnadňuje psaní a pochopení programů, pomáhá seskupovat data.
    Struktura vzorku pole představuje soubor dat, ale její prvky mohou mít různé typy a konverze se provádí jménem, ​​nikoliv indexem. {type1 variable name1; název1 proměnné1; //ostatní členové dat; } Deklarace strukturální proměnné nastane po uzavření kuželovitých závorek. struktura knihy {char title
    ; char autor
    ; double cast; } kniha1 kniha2 * ptr_bk; Pole jsou přístupná operátorem. Chcete-li odkazovat na proměnnou názvu, napište: book1.title; Proto inicializujte proměnnou book1.title = "String"; Operátor "->" se používá k odkazu na ukazatel. ptr_bk-> cast; nebo ".". (* (ptr_bk)). Druhý seznam seznamů s daty je enum (enum). Obsahuje celočíselné proměnné. enum {červená, modrá, zelená}; V příkladu je deklarován anonymní převod obsahující tři členy červená, modrá, zelená. Před přístupem k prvkům je deklarovaná proměnná deklarována. enum name1 {červená,modrá, červená} pojmenujeme; V tomto případě name1 je název přenosu a varname je název proměnné. V době vytváření struktury můžete určit několik proměnných. Přenášejí se čárkou. enum name1 {červená, modrá, červená} varname1 varname2 varname3; Přístup k převodním členům je uveden pomocí příkazu "Opether". varname.red = "červená";

    Závěr

    Jazyk C poskytuje velkou sadu typů. Jsou tvořeny pomocí vhodných specifikátorů. Základní typy jsou rozděleny na čísla (dvojité, plovoucí) a znaky (int, char). Modifikátory podepsané a nepodepsané označují znak před symbolem. Modifikátory jsou dlouhé krátké a jsou odpovědné za velikost buněk v paměti pro uložení hodnot proměnných. Logický typ dat má dvě hodnoty: true and false. Pole, struktury jsou složité datové typy. Ukazatel pracuje s adresou proměnné, na kterou odkazuje.

    Související publikace