Типови података у Ц, класа података чије вредности имају сличне карактеристике. Тип дефинише интерну репрезентацију података у меморији. Најосновнији типови података су боолеан, интегер, флоатинг поинт, стринг, поинтерс.
Са динамичким типкањем, променљива је повезана са типом у време иницијализације. Испоставља се да варијабла у различитим дијеловима кода може имати различите типове. Динамичка подршка за куцање Јава сцрипт Питхон, Руби, ПХП.
Статичко типкање је супротно од динамичког. Након декларације, варијабла прима тип који се не мијења даље. Ц и Ц ++ језици су управо такви. Овај метод је најпогоднији за писање комплексног кода, а многе грешке су елиминисане у фази компилације.
Језици су неформално подијељени на строго типизиране и слабо типизиране. Снажно куцање подразумева да ће преводилац генерисати грешку ако се очекивани и стварни типови не подударају.
к = 1 + "2"; // еррор - не можете додати знак броју
Пример слабог куцања.
к = 1 + "2"; // 3
Провјере за одобрење типа обављају сигурносни системи типа. Дошло је до грешке у куцању, на пример, када покушавате да користите број као функцију. Постоје невидјени језици. За разлику од типизираних, они дозвољавају извођење свих операција на сваком објекту.
Варијабле, без обзира на врсту, имају свој опсег и вријеме постојања.
Класе меморије:
Све варијабле у Ц језику су локалне по дефаулту. Могу се користити само унутар функције или блока. По завршетку функције, њихова вриједност се уништава.
Статичка варијабла је такођер локална, али изван њеног блока може имати различиту вриједност, а између позива функција, вриједност је сачувана.
Спољна променљива је глобална. Доступан је у било ком делу кода, па чак иу другом фајлу.
Варијабла регистра препоручује да компилатор похрани вриједност у РАМ.
Спецификатори типа података у Ц не могу бити назначени у таквим случајевима:
Да бисте одредили једноставне типове, наведите квалификаторе инт, цхар, флоат или доубле. Варијабле могу бити замјенски модификатори непотписани (потписани), потписани (потписани), кратки, дуги, дуги.
По дефаулту, сви бројеви су потписани, односно могу бити у опсегу само позитивних бројева. Да бисте дефинисали променљиву типа цхар као потписану, пише се потписани знак. Дуга, дуга и кратка показује колико је меморијског простора додељено за складиштење. Највећи је дугачак, најмањи је кратак.
Цхар је најмањи тип података у Ц. За спремање вриједности додијељено је само 1 бајт меморије. Варијабле типа знакова су обично додељене знаковима, рјеђе - бројевима. Вредности знакова су наведене.
цхар а = “а”;
цхар б = 2;
Тип инт чува целих бројева, његова величина није дефинисана - заузима до 4 бајта меморије, у зависности од архитектуре рачунара.
инт а = 12;
Изричита конверзија непотписане променљиве се даје као:
унсигнед инт а = 12;
Имплицитно изгледа овако:
инт а = 12у;
Флоат и дупло дефинишите бројеве са тачком. Флоат бројеви су представљени као -2.3 или 3.34. Двострука се користи за већу прецизност - након децималног сепаратора, означава се више цифара. Овај тип заузима више меморијског простора од флоат-а.
дупли = 12.4567;
Воид је нула. Он дефинише функције које не враћају ништа. Са овим квалификатором, празна вредност је специфицирана у аргументима метода. Показивачи који могу узети било који тип података су такође дефинисани као празнине.
Користи се у условним провјерама и циклусима. Има само два значења:
Боолеан вредности се могу конвертовати у инт вредност. Истина је еквивалентна једном, лажна до нуле. Конверзија типа се обезбеђује само између боола и инт, иначе ће компајлер генерисати грешку.
инт к = 123;
иф (к) {// Грешка: "Не може имплицитно да конвертује тип 'инт' у 'боол'"
};
иф (к! = 0) // Ц # начин
{
}
Низови су сложени типови дати у Ц. ПЛ не ради са стринговима на исти начин као и Јавасцрипт или Руби. У Ц, сви низови су низови елемената вредности знака. Низови се завршавају нулом бајта “”.
Стринг декларација у Ц: цхар б [] = {'с', 'т', 'р', 'и', 'н', 'г', ''};
Низ је такође декларисан у резимеу.
цхар а [] = "стринг";
а [1] === б [1]; // 'т'
Интегер или карактерни низови су декларисани на исти начин: име варијабле типа података [величина поља].
инт а [100];
цхар б [5];
Слична синтакса указује да величина инт вриједности не може бити већа од 100 знакова. Када креирате низ, одређени број ћелија је резервисан у меморији за чување елемената. Стога, за обраду низова података са непознатом димензијом или оном која ће се променити, меморија се динамички алоцира.
Мултидимензионални низови су декларисани на следећи начин:
инт а [2] [3];
Приликом креирања овог поља, додељује се простор, у овом случају, за чување два угњеждена поља, која се састоје од три елемента.
Иницијализација вишедимензионалног низа:
инт а [2] [3] = {1, 2, 3, 4, 5, 6};
а [1]; // [1, 2, 3]
а [2]; // [4, 5, 6]
Показивачи - главна карактеристика језика, отварају могућности за рад са меморијом. Они преносе информације о локацији друге променљиве у меморији. Пре употребе, као и друге променљиве, декларишу се у облику типа * показивача. Тип је тип променљиве, показивач је име показивача.
Да бисте поставили показивач на вредност друге променљиве, користе се везе. Они прослеђују адресу променљиве и користе се као сигуран показивач.
инт а = 2;
инт * поинтер;
поинтер = & а;
Линкови вам омогућавају да радите са показивачем као са објектом.
У овом случају, & а ће вратити 0к7340цад2а25ц, * поинтер - 2, али показивач без "*" ће вратити 0к7340цад2а25ц.
Промјеном вриједности не мијењамо адресу, тако да се показивач такођер односи на 0к7340цад2а25ц, али ће промијенити његову вриједност.
Показивач на други показивач се декларише у облику:
инт в = 100;
инт * к = & в;
инт ** з = & к;
Показивач на низ ради на мало другачији начин.
инт ц [5] = [1, 2, 3, 4, 5], * а;
Декларирали смо низ целих бројева и поинтер инт а.
У овом случају, показивач не показује на сам низ, већ само на његов први елемент. Тако,
а = ц;
и
а = & ц [0]; // 1
еквивалентни једни другима.
Сада се можете позвати на трећи елемент низа користећи израз
* (а + 3)
или
а [3];
У горњем примјеру, можете видјети да додавање показивача ради на другачији начин. На њих се могу примијенити различите аритметичке операције.
Показивач на низ је наведен на следећи начин:
цхар (* па) [10];
Али низ показивача изгледа овако:
цхар * пц [10];
Структура је тип података у Ц који олакшава писање и разумевање програма, помаже груписању података.
Структура попут низа представља скуп података, али његови елементи могу бити различитог типа, а референца се прави по имену, а не по индексу.
{
типе1 вариабле_наме1;
типе1 вариабле_наме1;
// други чланови података;
}
Структурна варијабла се декларише након затварања витичастих заграда.
струцт боок
{
цхар титле [20];
цхар аутор [30];
доубле цаст;
} боок1, боок2, * птр_бк;
Приступ пољима је обезбеђен са оператором “.”. Да бисмо приступили наслову променљиве, пишемо:
боок1.титле;
Дакле, иницијализујемо варијаблу
боок1.титле = “Стринг”;
За упућивање на показиваче користите оператора "->".
птр_бк-> цаст;
или оператор ".".
(* (птр_бк)).
Друга врста листа са овим је енум (енумерација). Она садржи целобројне променљиве.
енум {црвена, плава, зелена};
Пример наводи да је анонимно набрајање које садржи три члана црвено, плаво, зелено. Пре приступа елементима, декларисана је енумерирана променљива.
енум наме1 {црвена, плава, црвена} варнаме;
У овом случају, име1 је име енумерације, а варнаме је име променљиве. У тренутку креирања структуре, можете поставити неколико варијабли. Они су одвојени зарезима.
енум наме1 {црвена, плава, црвена} варнаме1, варнаме2, варнаме3;
Приступ члановима набрајања је одређен помоћу "." Оператора.
варнаме.ред = "црвена";
Ц језик пружа велики скуп типова. Они се формирају помоћу одговарајућих квалификатора.
Основни типови су подељени на нумерички (доубле, флоат) и потписани (инт, цхар). Модификатори потписани и непотписани означавају присуство знака испред симбола. Кратки и дуги модификатори су одговорни за величину ћелија у меморији за чување вредности променљивих. Логички тип података има две вредности: труе и фалсе. Низови, структуре се односе на сложене типове података. Показивач ради са адресом променљиве на коју указује.