1 00:00:00,000 --> 00:00:02,395 >> [Мусиц плаиинг] 2 00:00:02,395 --> 00:00:05,750 3 00:00:05,750 --> 00:00:06,506 >> Даг Ллоид: У реду. 4 00:00:06,506 --> 00:00:08,880 Радили смо са целих бројева, Радили смо са ликовима, 5 00:00:08,880 --> 00:00:11,930 смо радили плута, дублу, жице, и Боолс. 6 00:00:11,930 --> 00:00:14,870 Ми смо прилично исцрпљени сви много од [неразумљиво] типова који 7 00:00:14,870 --> 00:00:17,100 су доступни за све нас заједно. 8 00:00:17,100 --> 00:00:19,430 Али сада желимо да урадимо нешто више. 9 00:00:19,430 --> 00:00:20,210 Како ми то радимо? 10 00:00:20,210 --> 00:00:22,560 Како створити различите типове података? 11 00:00:22,560 --> 00:00:26,130 Можемо учинити помоћу структуре. 12 00:00:26,130 --> 00:00:30,180 Дакле структуре омогућавају нам да се уједини варијабле различитих типова 13 00:00:30,180 --> 00:00:34,810 у јединствени, нова размицањем, које можемо доделити своје име типа. 14 00:00:34,810 --> 00:00:37,570 Ово је стварно јака ствар бити у стању да уради, 15 00:00:37,570 --> 00:00:40,900 јер сада можемо група елементи различитих типова података 16 00:00:40,900 --> 00:00:43,910 заједно који имају логичну везу. 17 00:00:43,910 --> 00:00:46,440 Били смо у стању да уради ово са низовима некако, зар не? 18 00:00:46,440 --> 00:00:49,540 Ми група може варијабле истог тип података 19 00:00:49,540 --> 00:00:53,410 заједно у великом јединици меморије, низа. 20 00:00:53,410 --> 00:00:56,660 >> Али ми нисмо били у стању да се мешају уп поједине врсте података заједно. 21 00:00:56,660 --> 00:01:02,610 Не можемо, рецимо, упарите цео број, и карактер, и двоструки све 22 00:01:02,610 --> 00:01:05,330 у истом ствари и назвати једну јединицу. 23 00:01:05,330 --> 00:01:08,830 Али са структурама, или често називају Структуре, 24 00:01:08,830 --> 00:01:09,585 заиста можемо. 25 00:01:09,585 --> 00:01:12,370 Дакле, структура је некако Као супер променљиве. 26 00:01:12,370 --> 00:01:16,530 То је променљива која садржи друге варијабле унутар ње. 27 00:01:16,530 --> 00:01:19,650 Дакле, овде је пример веома једноставна структура. 28 00:01:19,650 --> 00:01:23,380 То је оно што ће изгледати синтакса волим да створи структура за ауто. 29 00:01:23,380 --> 00:01:25,250 Сада идемо кроз синтаксу овде. 30 00:01:25,250 --> 00:01:27,400 Струцт, то је кључна реч која означава 31 00:01:27,400 --> 00:01:30,270 да сам овде ствара нову врсту података. 32 00:01:30,270 --> 00:01:33,860 Конкретно, име је тип пренос података је Биће струцт аутомобил, као што ћемо видети. 33 00:01:33,860 --> 00:01:36,640 Али ово је врста врха Офф то компајлер да је ово 34 00:01:36,640 --> 00:01:42,440 као група варијабли које иде да се сматра делом истог типа 35 00:01:42,440 --> 00:01:44,010 за минут. 36 00:01:44,010 --> 00:01:46,340 >> Аутомобили, само име структуре. 37 00:01:46,340 --> 00:01:50,590 Опет, тип овдје подаци се иде да буде струцт аутомобил, а не само ауто. 38 00:01:50,590 --> 00:01:53,060 Али, ако имате дифферент-- ако направите више Структуре 39 00:01:53,060 --> 00:01:56,950 у истом програму, морате да разликовати струцт и струцт. 40 00:01:56,950 --> 00:02:00,140 Тако струцт аутомобил, и ја можда има Струцт студент, на пример, 41 00:02:00,140 --> 00:02:01,790 у истом програму. 42 00:02:01,790 --> 00:02:05,980 Унутар заграда се све тзв пољима, 43 00:02:05,980 --> 00:02:07,954 или чланови структуре. 44 00:02:07,954 --> 00:02:10,370 Дакле, шта су неке од ствари које су својствене у аутомобилу? 45 00:02:10,370 --> 00:02:15,270 Па, обично има година, је име модела, а регистарска таблица, 46 00:02:15,270 --> 00:02:18,000 километраже које обично има неки број миља на њему, 47 00:02:18,000 --> 00:02:19,225 Можда је и величина мотора. 48 00:02:19,225 --> 00:02:23,570 И као што видите, ја мешате цели бројеви и слова и дубл. 49 00:02:23,570 --> 00:02:26,420 Сви ће бити део овог новог типа података. 50 00:02:26,420 --> 00:02:29,750 >> На крају, коначна ствар коју треба да урадите, Не заборавите ову малу зарез 51 00:02:29,750 --> 00:02:30,290 на крају. 52 00:02:30,290 --> 00:02:34,380 Након што смо завршим дефинисање структуре, морамо да ставимо тачку и зарез на крају. 53 00:02:34,380 --> 00:02:37,325 То је веома честа Синтактичка грешка, јер са функцијом, 54 00:02:37,325 --> 00:02:40,200 На пример, само би се отворена коврџава Браце, близу коврџава заграда. 55 00:02:40,200 --> 00:02:42,950 Не ставити зарез На крај дефиниције функције. 56 00:02:42,950 --> 00:02:46,430 Ово изгледа као функцију дефиниција, али није, 57 00:02:46,430 --> 00:02:49,653 и тако зарез тамо је само подсетник да вас 58 00:02:49,653 --> 00:02:52,440 треба да га ставим тамо, јер компајлер ће у супротном не 59 00:02:52,440 --> 00:02:53,510 знам шта да радим са њим. 60 00:02:53,510 --> 00:02:56,160 То је веома честа грешка да случајно да 61 00:02:56,160 --> 00:02:58,570 када сте први пут се дефинисање структуре. 62 00:02:58,570 --> 00:02:59,500 >> ОК. 63 00:02:59,500 --> 00:03:02,824 Дакле, ми обично дефинишемо наше структуре на самом врху наших програма 64 00:03:02,824 --> 00:03:05,490 јер су вероватно ћемо ће користити вишеструке функције. 65 00:03:05,490 --> 00:03:08,850 Ми не желимо да дефинише Струцт унутар функције, 66 00:03:08,850 --> 00:03:12,110 јер онда можемо само-- опсег структура заиста 67 00:03:12,110 --> 00:03:13,790 постоји само унутар те функције. 68 00:03:13,790 --> 00:03:17,450 Вероватно би хтео да дефинише структуру тако да га могу користити у више функција, 69 00:03:17,450 --> 00:03:20,670 или можда у више датотеке које су везане заједно 70 00:03:20,670 --> 00:03:22,920 да створимо један програм. 71 00:03:22,920 --> 00:03:24,920 Сометимес такодје уместо тога дефинисања структуре 72 00:03:24,920 --> 00:03:27,961 на самом врху где ставиш фунта укључује и своју фунту дефинише, 73 00:03:27,961 --> 00:03:32,080 На пример, можете да их ставите у одвојене тачка х датотеке, које се онда 74 00:03:32,080 --> 00:03:35,020 фунта укључују се. 75 00:03:35,020 --> 00:03:37,620 >> Тако имамо структуре, али сада морамо да се унутар њих. 76 00:03:37,620 --> 00:03:39,800 Како да се унутар структура за приступ 77 00:03:39,800 --> 00:03:43,530 ти суб-променљиве, те варијабле да постоје унутар структуре? 78 00:03:43,530 --> 00:03:46,810 Па, ми имамо нешто што се зове оператор тачка, која нам омогућава 79 00:03:46,810 --> 00:03:50,990 да приступите поља структуре. 80 00:03:50,990 --> 00:03:55,490 Тако, на пример, рецимо да сам проглашен моји структура података тип негдје 81 00:03:55,490 --> 00:03:59,020 на врху мог програма, или можда у тачка х фајл који имам килограма укључени. 82 00:03:59,020 --> 00:04:03,360 Ако сам онда желите да креирате нови променљива те врсте података, могу да кажем, 83 00:04:03,360 --> 00:04:06,260 струцт аутомобил, мој ауто, зарез. 84 00:04:06,260 --> 00:04:11,580 Као што сам могао рећи инт х, или стринг наме зарез. 85 00:04:11,580 --> 00:04:18,100 >> Тип овде подаци струцт аутомобил, име променљиве је мој ауто, 86 00:04:18,100 --> 00:04:23,770 и онда могу користити оператор дот у приступити различитим областима мог аута. 87 00:04:23,770 --> 00:04:27,494 Дакле, могу да кажем мој ауто дот године износи 2011. 88 00:04:27,494 --> 00:04:28,410 То је сасвим у реду. 89 00:04:28,410 --> 00:04:34,210 Године, ако се сећате, је дефинисан као цео поље унутар ове струцт кола 90 00:04:34,210 --> 00:04:35,200 тип података. 91 00:04:35,200 --> 00:04:39,966 Дакле, било променљива података струцт аутомобила тип, као што је мом ауту, могу да кажем мој ауто 92 00:04:39,966 --> 00:04:44,030 дот године износи и онда доделити да неки цео број вредност, 2011. 93 00:04:44,030 --> 00:04:47,290 Мој ауто тачка плоча једнако ЦС50. 94 00:04:47,290 --> 00:04:51,180 Моја картица тачка километраже једнако 50505 зарез. 95 00:04:51,180 --> 00:04:53,270 Све су то савршено добро и то је 96 00:04:53,270 --> 00:04:57,802 како смо приступили поља структуре. 97 00:04:57,802 --> 00:05:00,260 Структуре, међутим, не треба да се створи на стек. 98 00:05:00,260 --> 00:05:02,950 Баш као било која друга променљива, ми може динамички да их издвоји. 99 00:05:02,950 --> 00:05:06,309 Ако имамо програм који би могао се генерише многе структуре, 100 00:05:06,309 --> 00:05:08,100 не знамо колико ћемо морати, 101 00:05:08,100 --> 00:05:10,800 онда морамо да динамички издвојити оне структуре 102 00:05:10,800 --> 00:05:12,960 као наш програм је покренут. 103 00:05:12,960 --> 00:05:16,600 И тако, ако ћемо да приступите поља структуре у том контексту, 104 00:05:16,600 --> 00:05:20,660 сећам се да смо прво треба да Дереференце показивач на структуру, 105 00:05:20,660 --> 00:05:24,810 и онда када смо дереференце показивач, онда можемо приступити поља. 106 00:05:24,810 --> 00:05:26,830 Ако имамо само показивач на структуру, 107 00:05:26,830 --> 00:05:32,120 не можемо само рећи показивач дот поље име и добити оно што ми тражимо. 108 00:05:32,120 --> 00:05:34,259 Ту је додатни корак дереференцинг. 109 00:05:34,259 --> 00:05:36,050 Па рецимо да уместо превиоус-- 110 00:05:36,050 --> 00:05:38,770 баш као у претходном примеру, уместо да га прогласи 111 00:05:38,770 --> 00:05:43,680 на стек, струцт аутомобил, мој аутомобил, зарез, кажем струцт аутомобил, 112 00:05:43,680 --> 00:05:48,020 звезда, показивач на струцт аутомобил зове мој ауто, 113 00:05:48,020 --> 00:05:51,250 једнако Маллоц величине струцт аутомобила. 114 00:05:51,250 --> 00:05:54,950 Величина ћемо схватити колико бајтова ваш нови тип података заузима. 115 00:05:54,950 --> 00:05:58,570 Не нужно само да морате да користите величина, видтх, инт, цхар или, или било 116 00:05:58,570 --> 00:05:59,715 од уграђених типова података. 117 00:05:59,715 --> 00:06:02,090 Преводилац је довољно паметан да схватим колико је бајтова 118 00:06:02,090 --> 00:06:04,170 се од вас тражи нове структуре. 119 00:06:04,170 --> 00:06:09,610 Тако сам себи маллоц јединицу меморије довољно велик да одржи струцт аутомобил, 120 00:06:09,610 --> 00:06:12,410 и ја се показивач назад до тог блока меморије, 121 00:06:12,410 --> 00:06:16,090 и да показивач је додељен мом ауту. 122 00:06:16,090 --> 00:06:18,050 >> Дакле, ако желите да приступите поља из мог аута, 123 00:06:18,050 --> 00:06:22,615 Први дереференце мом ауту користим дереференце оператер, звездице 124 00:06:22,615 --> 00:06:26,620 што смо видели из показивача видеа, а затим након што сам Дереференце, 125 00:06:26,620 --> 00:06:32,200 онда могу користити оператор дот у приступити различитим областима мог аута. 126 00:06:32,200 --> 00:06:35,490 Стар мој ауто тачка годину износи 2011. 127 00:06:35,490 --> 00:06:38,480 То би има за последицу желимо у овом случају, 128 00:06:38,480 --> 00:06:41,960 јер смо динамички сам издвојила мој ауто. 129 00:06:41,960 --> 00:06:43,610 >> То је мало нервира, зар не? 130 00:06:43,610 --> 00:06:44,818 Ту је процес сада 2 корака. 131 00:06:44,818 --> 00:06:47,460 Сада морамо да дереференце-- имамо оператера звезда, 132 00:06:47,460 --> 00:06:48,910 и имамо оператера дот. 133 00:06:48,910 --> 00:06:51,660 И као што би се могло очекивати, јер Ц програмери воле краће путеве 134 00:06:51,660 --> 00:06:53,740 радити ствари, постоји краћи пут за то. 135 00:06:53,740 --> 00:06:57,790 Постоји још један оператер зове стрелица, што чини овај процес много лакше. 136 00:06:57,790 --> 00:07:00,750 Начин стрелица радове је прво дереференцес 137 00:07:00,750 --> 00:07:03,560 показивач на левој страни страна оператора, 138 00:07:03,560 --> 00:07:06,620 и онда, након што дереференцед показивач на левој страни, 139 00:07:06,620 --> 00:07:09,620 она приступа поље на десној страни. 140 00:07:09,620 --> 00:07:14,170 И тако већ смо имали ову врсту звезде мој ауто дот све ове ствари, 141 00:07:14,170 --> 00:07:15,880 Као да је било много тамо дешава. 142 00:07:15,880 --> 00:07:22,040 Али оно што уместо да урадимо је ово-- мој ауто стрелица године износи 2011. 143 00:07:22,040 --> 00:07:23,580 >> Опет, шта се дешава овде? 144 00:07:23,580 --> 00:07:25,720 Прво, ја дереференцинг мој ауто. 145 00:07:25,720 --> 00:07:27,810 Што опет је показивач овде. 146 00:07:27,810 --> 00:07:31,270 Затим, након дереференцед мој ауто, ја 147 00:07:31,270 --> 00:07:35,130 затим може приступити поља године, плоча, и километара 148 00:07:35,130 --> 00:07:40,020 баш као што сам могао раније да прво Половни звезда дереференце мом ауту, 149 00:07:40,020 --> 00:07:42,020 и дот да приступите терен. 150 00:07:42,020 --> 00:07:45,290 Дакле, можете имати структуре, ти може имати показиваче структурама, 151 00:07:45,290 --> 00:07:48,360 а имате начина за приступ поља тих објеката, 152 00:07:48,360 --> 00:07:52,600 да ли имате путоказе до они или сами променљиве. 153 00:07:52,600 --> 00:07:57,640 Дот или стрела, у зависности од како је проглашена променљива. 154 00:07:57,640 --> 00:08:00,510 Ја сам Доуг Ллоид, ово је ЦС50. 155 00:08:00,510 --> 00:08:01,975