>> [Мусиц плаиинг]
>> Даг Ллоид: У реду.
Радили смо са целих бројева, Радили смо са ликовима,
смо радили плута, дублу, жице, и Боолс.
Ми смо прилично исцрпљени сви много од [неразумљиво] типова који
су доступни за све нас заједно.
Али сада желимо да урадимо нешто више.
Како ми то радимо?
Како створити различите типове података?
Можемо учинити помоћу структуре.
Дакле структуре омогућавају нам да се уједини варијабле различитих типова
у јединствени, нова размицањем, које можемо доделити своје име типа.
Ово је стварно јака ствар бити у стању да уради,
јер сада можемо група елементи различитих типова података
заједно који имају логичну везу.
Били смо у стању да уради ово са низовима некако, зар не?
Ми група може варијабле истог тип података
заједно у великом јединици меморије, низа.
>> Али ми нисмо били у стању да се мешају уп поједине врсте података заједно.
Не можемо, рецимо, упарите цео број, и карактер, и двоструки све
у истом ствари и назвати једну јединицу.
Али са структурама, или често називају Структуре,
заиста можемо.
Дакле, структура је некако Као супер променљиве.
То је променљива која садржи друге варијабле унутар ње.
Дакле, овде је пример веома једноставна структура.
То је оно што ће изгледати синтакса волим да створи структура за ауто.
Сада идемо кроз синтаксу овде.
Струцт, то је кључна реч која означава
да сам овде ствара нову врсту података.
Конкретно, име је тип пренос података је Биће струцт аутомобил, као што ћемо видети.
Али ово је врста врха Офф то компајлер да је ово
као група варијабли које иде да се сматра делом истог типа
за минут.
>> Аутомобили, само име структуре.
Опет, тип овдје подаци се иде да буде струцт аутомобил, а не само ауто.
Али, ако имате дифферент-- ако направите више Структуре
у истом програму, морате да разликовати струцт и струцт.
Тако струцт аутомобил, и ја можда има Струцт студент, на пример,
у истом програму.
Унутар заграда се све тзв пољима,
или чланови структуре.
Дакле, шта су неке од ствари које су својствене у аутомобилу?
Па, обично има година, је име модела, а регистарска таблица,
километраже које обично има неки број миља на њему,
Можда је и величина мотора.
И као што видите, ја мешате цели бројеви и слова и дубл.
Сви ће бити део овог новог типа података.
>> На крају, коначна ствар коју треба да урадите, Не заборавите ову малу зарез
на крају.
Након што смо завршим дефинисање структуре, морамо да ставимо тачку и зарез на крају.
То је веома честа Синтактичка грешка, јер са функцијом,
На пример, само би се отворена коврџава Браце, близу коврџава заграда.
Не ставити зарез На крај дефиниције функције.
Ово изгледа као функцију дефиниција, али није,
и тако зарез тамо је само подсетник да вас
треба да га ставим тамо, јер компајлер ће у супротном не
знам шта да радим са њим.
То је веома честа грешка да случајно да
када сте први пут се дефинисање структуре.
>> ОК.
Дакле, ми обично дефинишемо наше структуре на самом врху наших програма
јер су вероватно ћемо ће користити вишеструке функције.
Ми не желимо да дефинише Струцт унутар функције,
јер онда можемо само-- опсег структура заиста
постоји само унутар те функције.
Вероватно би хтео да дефинише структуру тако да га могу користити у више функција,
или можда у више датотеке које су везане заједно
да створимо један програм.
Сометимес такодје уместо тога дефинисања структуре
на самом врху где ставиш фунта укључује и своју фунту дефинише,
На пример, можете да их ставите у одвојене тачка х датотеке, које се онда
фунта укључују се.
>> Тако имамо структуре, али сада морамо да се унутар њих.
Како да се унутар структура за приступ
ти суб-променљиве, те варијабле да постоје унутар структуре?
Па, ми имамо нешто што се зове оператор тачка, која нам омогућава
да приступите поља структуре.
Тако, на пример, рецимо да сам проглашен моји структура података тип негдје
на врху мог програма, или можда у тачка х фајл који имам килограма укључени.
Ако сам онда желите да креирате нови променљива те врсте података, могу да кажем,
струцт аутомобил, мој ауто, зарез.
Као што сам могао рећи инт х, или стринг наме зарез.
>> Тип овде подаци струцт аутомобил, име променљиве је мој ауто,
и онда могу користити оператор дот у приступити различитим областима мог аута.
Дакле, могу да кажем мој ауто дот године износи 2011.
То је сасвим у реду.
Године, ако се сећате, је дефинисан као цео поље унутар ове струцт кола
тип података.
Дакле, било променљива података струцт аутомобила тип, као што је мом ауту, могу да кажем мој ауто
дот године износи и онда доделити да неки цео број вредност, 2011.
Мој ауто тачка плоча једнако ЦС50.
Моја картица тачка километраже једнако 50505 зарез.
Све су то савршено добро и то је
како смо приступили поља структуре.
Структуре, међутим, не треба да се створи на стек.
Баш као било која друга променљива, ми може динамички да их издвоји.
Ако имамо програм који би могао се генерише многе структуре,
не знамо колико ћемо морати,
онда морамо да динамички издвојити оне структуре
као наш програм је покренут.
И тако, ако ћемо да приступите поља структуре у том контексту,
сећам се да смо прво треба да Дереференце показивач на структуру,
и онда када смо дереференце показивач, онда можемо приступити поља.
Ако имамо само показивач на структуру,
не можемо само рећи показивач дот поље име и добити оно што ми тражимо.
Ту је додатни корак дереференцинг.
Па рецимо да уместо превиоус--
баш као у претходном примеру, уместо да га прогласи
на стек, струцт аутомобил, мој аутомобил, зарез, кажем струцт аутомобил,
звезда, показивач на струцт аутомобил зове мој ауто,
једнако Маллоц величине струцт аутомобила.
Величина ћемо схватити колико бајтова ваш нови тип података заузима.
Не нужно само да морате да користите величина, видтх, инт, цхар или, или било
од уграђених типова података.
Преводилац је довољно паметан да схватим колико је бајтова
се од вас тражи нове структуре.
Тако сам себи маллоц јединицу меморије довољно велик да одржи струцт аутомобил,
и ја се показивач назад до тог блока меморије,
и да показивач је додељен мом ауту.
>> Дакле, ако желите да приступите поља из мог аута,
Први дереференце мом ауту користим дереференце оператер, звездице
што смо видели из показивача видеа, а затим након што сам Дереференце,
онда могу користити оператор дот у приступити различитим областима мог аута.
Стар мој ауто тачка годину износи 2011.
То би има за последицу желимо у овом случају,
јер смо динамички сам издвојила мој ауто.
>> То је мало нервира, зар не?
Ту је процес сада 2 корака.
Сада морамо да дереференце-- имамо оператера звезда,
и имамо оператера дот.
И као што би се могло очекивати, јер Ц програмери воле краће путеве
радити ствари, постоји краћи пут за то.
Постоји још један оператер зове стрелица, што чини овај процес много лакше.
Начин стрелица радове је прво дереференцес
показивач на левој страни страна оператора,
и онда, након што дереференцед показивач на левој страни,
она приступа поље на десној страни.
И тако већ смо имали ову врсту звезде мој ауто дот све ове ствари,
Као да је било много тамо дешава.
Али оно што уместо да урадимо је ово-- мој ауто стрелица године износи 2011.
>> Опет, шта се дешава овде?
Прво, ја дереференцинг мој ауто.
Што опет је показивач овде.
Затим, након дереференцед мој ауто, ја
затим може приступити поља године, плоча, и километара
баш као што сам могао раније да прво Половни звезда дереференце мом ауту,
и дот да приступите терен.
Дакле, можете имати структуре, ти може имати показиваче структурама,
а имате начина за приступ поља тих објеката,
да ли имате путоказе до они или сами променљиве.
Дот или стрела, у зависности од како је проглашена променљива.
Ја сам Доуг Ллоид, ово је ЦС50.