Tipi podatkov v C, razred podatkov, katerih vrednosti imajo podobne značilnosti. Tip določa notranjo predstavitev podatkov v pomnilniku. Najbolj osnovni podatkovni tipi so boolean, celo število, plavajoča točka, niz, kazalci.
Z dinamičnim tipkanjem je spremenljivka povezana s tipom v času inicializacije. Izkazalo se je, da ima lahko spremenljivka v različnih delih kode različne vrste. Podpora za dinamično tipkanje Java skript Python, Ruby, PHP.
Statična tipizacija je nasprotna dinamiki. Po deklaraciji spremenljivka prejme tip, ki se ne spremeni naprej. C in C ++ jeziki so popolnoma taki. Ta metoda je najprimernejša za pisanje kompleksne kode in veliko napak se odpravi v fazi zbiranja.
Jeziki so neformalno razdeljeni na močno tipizirane in šibko tipizirane. Močno tipkanje pomeni, da bo prevajalnik ustvaril napako, če se pričakovane in dejanske vrste ne ujemajo.
x = 1 + "2"; // napaka - številki ne morete dodati znaka
Primer šibkega tipkanja.
x = 1 + "2"; 3
Homologacijske preglede opravi varnostni sistem tipa. Do tipkarske napake pride npr. Pri poskusu uporabe številke kot funkcije. Obstajajo netipirani jeziki. V nasprotju s tipiziranimi omogočajo izvajanje vseh operacij na vsakem predmetu.
Spremenljivke, ne glede na njihovo vrsto, imajo svoj obseg in čas obstoja.
Razredi pomnilnika:
Vse spremenljivke v jeziku C so privzeto lokalne. Uporabljajo se lahko samo znotraj funkcije ali bloka. Po zaključku funkcije se njihova vrednost uniči.
Statična spremenljivka je tudi lokalna, vendar ima lahko zunaj njenega bloka drugačno vrednost, med funkcijskimi klici pa se vrednost ohrani.
Zunanja spremenljivka je globalna. Na voljo je v katerem koli delu kode in celo v drugi datoteki.
Register spremenljivka priporoča, da prevajalnik shrani vrednost v RAM.
Specifikacije podatkovnih tipov v C v takih primerih ni mogoče navesti:
Če želite določiti preproste vrste, podajte kvalifikatorje int, char, float ali double. Spremenljivke so lahko nadomestni modifikatorji nepodpisani (podpisani), podpisani (podpisani), kratki, dolgi, dolgi.
Privzeto so vse številke podpisane, lahko so v območju samo pozitivnih števil. Če želite določiti spremenljivko tipa char kot podpisano, je napisana podpisana oznaka. Dolga, dolga in kratka oznaka, koliko pomnilnika je prostora za shranjevanje. Največji je dolg, najmanjši pa je kratek.
Char je najmanjši tip podatkov v C. Za shranjevanje vrednosti je dodeljen samo 1 bajt pomnilnika. Spremenljivke znakovnega tipa so običajno dodeljene znaki, manj pogosto - številke. Vrednosti znakov so navedene.
char a = “a”;
char b = 2;
Tip int shranjuje cela števila, njegova velikost ni definirana - potrebuje do 4 bajte pomnilnika, odvisno od arhitekture računalnika.
int a = 12;
Izrecna pretvorba nepodpisane spremenljivke je podana kot:
nepodpisan int = 12;
Implicitno izgleda takole:
int a = 12u;
Float in dvojno določanje številk s piko. Float številke so predstavljene kot -2.3 ali 3.34. Dvojno se uporablja za večjo natančnost - po decimalnem ločilu je prikazanih več številk. Ta vrsta zavzema več pomnilnika kot float.
dvojno = 12.4567;
Void je nič. Opredeljuje funkcije, ki ne vrnejo ničesar. S tem kvalifikatorjem je v argumentih metod podana prazna vrednost. Kazalci, ki lahko sprejmejo kakršnekoli podatke, so prav tako opredeljeni kot praznine.
Uporablja se pri pogojnih pregledih in ciklih. Ima samo dva pomena:
Logične vrednosti lahko pretvorimo v vrednost int. Resnica je enaka eni, napačna na nič. Pretvorba tipa je zagotovljena samo med bool in int, sicer bo prevajalnik ustvaril napako.
int x = 123;
if (x) {// Napaka: "Ne morem implicitno pretvoriti tipa 'int' v 'bool'"
};
if (x! = 0) // C # način
{
}
Nizi so kompleksne vrste, podane v C. PL ne deluje z nizi na enak način kot Javascript ali Ruby. V C so vsi nizi nizi elementov znakovne vrednosti. Nizi se končajo z ničelnim bajtom »«.
Deklaracija niza v C: char b [] = {'s', 't', 'r', 'i', 'n', 'g', ''};
Niz je tudi deklariran v obliki povzetka.
char a [] = "niz";
a [1] === b [1]; // 't'
Celotne ali znakovne matrike so deklarirane na enak način: ime spremenljivke podatkovnega tipa [velikost polja].
int a [100];
char b [5];
Podobna skladnja kaže, da velikost vrednosti int ne sme biti večja od 100 znakov. Pri ustvarjanju matrike so v pomnilniku rezervirane številne celice za shranjevanje elementov. Zato je za obdelavo podatkovnih nizov z neznano dimenzionalnostjo ali tisto, ki se bo spremenila, pomnilnik dinamično dodeljen.
Večdimenzionalni nizi so razglašeni tako:
int a [2] [3];
Pri ustvarjanju tega polja je v tem primeru dodeljen prostor za shranjevanje dveh ugnezdenih nizov, ki so sestavljeni iz treh elementov.
Inicializacija večdimenzionalnega polja:
int a [2] [3] = {1, 2, 3, 4, 5, 6};
a [1]; // [1, 2, 3]
a [2]; // [4, 5, 6]
Kazalci - glavna značilnost jezika, ki odpirajo priložnosti za delo s spominom. Prenesejo informacije o lokaciji druge spremenljivke v spominu. Pred uporabo so, tako kot druge spremenljivke, deklarirane v obliki tipskega kazalca. Tip je vrsta spremenljivke, kazalec je ime kazalca.
Za nastavitev kazalca na vrednost druge spremenljivke se uporabljajo povezave. Prenašajo naslov spremenljivke in se uporabljajo kot varen kazalec.
int a = 2;
int * kazalec;
kazalec = & a;
Povezave vam omogočajo, da delate s kazalcem kot z objektom.
V tem primeru & a bo vrnil 0x7340cad2a25c, * kazalec - 2, vendar bo kazalec brez »*« vrnil 0x7340cad2a25c.
S spreminjanjem vrednosti ne spreminjamo njegovega naslova, zato se bo kazalec nanašal tudi na 0x7340cad2a25c, vendar bo spremenil njegovo vrednost.
Kazalec na drug kazalec je deklariran v obliki:
int w = 100;
int * x = & w;
int ** z = & x;
Kazalec na polje deluje na nekoliko drugačen način.
int c [5] = [1, 2, 3, 4, 5], * a;
Izjavili smo niz celih števil in kazalec int a.
V tem primeru kazalec ne kaže na matriko, ampak samo na njen prvi element. Tako
a = c;
in
a = & c [0]; 1
enakovredni.
Zdaj se lahko z izrazom sklicujete na tretji element matrike
* (a + 3)
ali
a [3];
V zgornjem primeru lahko vidite, da dodatek kazalca deluje na drugačen način. Na njih se lahko uporabijo različne aritmetične operacije.
Kazalec na matriko je podan na naslednji način:
char (* pa) [10];
Toda niz kazalcev izgleda takole:
char * pc [10];
Struktura je vrsta podatkov v C, ki olajša pisanje in razumevanje programov, pomaga pri združevanju podatkov.
Struktura, kot je matrika, predstavlja zbirko podatkov, vendar so lahko njeni elementi drugačne vrste, sklic pa je narejen po imenu, ne po indeksu.
{
type1 spremenljivo_ime1;
type1 spremenljivo_ime1;
// drugi člani podatkov;
}
Strukturna spremenljivka je deklarirana po zaprtju zavitih oklepajev.
book book
{
char naslov [20];
avtor avtorja [30];
dvojno ulivanje;
} book1, book2, * ptr_bk;
Dostop do polj je zagotovljen z operaterjem “.”. Za dostop do naslova spremenljivke pišemo:
book1.title;
Zato spremenljivko inicializiramo
book1.title = “String”;
Za sklicevanje na kazalce uporabite operator "->".
ptr_bk-> cast;
ali operator ".".
(* (ptr_bk)).
Druga vrsta seznamov s tem je seznam (enumeracija). Vsebuje celo število spremenljivk.
enum {rdeča, modra, zelena};
Primer navaja anonimno štetje, ki vsebuje tri člane rdeče, modre, zelene. Pred dostopom do elementov se navede enumerirana spremenljivka.
enum name1 (rdeča, modra, rdeča);
V tem primeru je ime1 ime oštevilčenja, in ime je spremenljivka. V trenutku ustvarjanja strukture lahko nastavite več spremenljivk. So ločeni z vejicami.
enum name1 {rdeča, modra, rdeča} varname1, varname2, varname3;
Dostop do članov oštevilčenja je podan z operaterjem ".".
varname.red = "rdeča";
C jezik zagotavlja velik nabor tipov. Oblikujejo se z ustreznimi kvalifikatorji.
Osnovni tipi so razdeljeni na številske (dvojne, float) in podpisane (int, char). Podpisani in nepodpisani modifikatorji označujejo prisotnost znaka pred simbolom. Kratki in dolgi modifikatorji so odgovorni za velikost celic v pomnilniku za shranjevanje vrednosti spremenljivk. Tip logičnih podatkov ima dve vrednosti: true in false. Nizi, strukture se nanašajo na kompleksne podatkovne tipe. Kazalec deluje z naslovom spremenljivke, na katero kaže.