1 00:00:00,000 --> 00:00:02,395 >> [Daqq tal-mużika] 2 00:00:02,395 --> 00:00:05,750 3 00:00:05,750 --> 00:00:06,506 >> Doug LLOYD: OK. 4 00:00:06,506 --> 00:00:08,880 Imxejna ħadem ma interi, konna ħadem ma 'karattri, 5 00:00:08,880 --> 00:00:11,930 konna ħadmet sufruni, jirdoppja, kordi, u bools. 6 00:00:11,930 --> 00:00:14,870 Imxejna eżawriti pretty ħafna kollha tat-tipi [inaudible] li 7 00:00:14,870 --> 00:00:17,100 kienu disponibbli għalina lkoll flimkien. 8 00:00:17,100 --> 00:00:19,430 Imma issa rridu nagħmlu xi ħaġa aktar. 9 00:00:19,430 --> 00:00:20,210 Kif nistgħu nagħmlu dan? 10 00:00:20,210 --> 00:00:22,560 Kif nistgħu joħolqu tipi differenti ta 'dejta? 11 00:00:22,560 --> 00:00:26,130 Nistgħu nagħmlu dan billi jużaw strutturi. 12 00:00:26,130 --> 00:00:30,180 Allura istrutturi inessu biex jiġu unifikati varjabbli ta 'tipi differenti 13 00:00:30,180 --> 00:00:34,810 fi wieħed, tip ġdid varjabbli, li nistgħu tassenja l-isem tip tagħha stess. 14 00:00:34,810 --> 00:00:37,570 Dan huwa verament b'saħħtu ħaġa li tkun tista 'tagħmel, 15 00:00:37,570 --> 00:00:40,900 għaliex nistgħu issa grupp Elementi ta 'tipi differenti ta' dejta 16 00:00:40,900 --> 00:00:43,910 flimkien li jkollhom rabta loġika. 17 00:00:43,910 --> 00:00:46,440 Imxejna kienu kapaċi jagħmlu dan ma arrays tip ta ', id-dritt? 18 00:00:46,440 --> 00:00:49,540 Aħna varjabbli Grupp jista ' tal-istess tip ta 'dejta 19 00:00:49,540 --> 00:00:53,410 flimkien f'unità kbir tal-memorja, firxa. 20 00:00:53,410 --> 00:00:56,660 >> Iżda aħna ma kinux kapaċi biex tħallat up tipi differenti ta 'dejta flimkien. 21 00:00:56,660 --> 00:01:02,610 Ma nistgħux, jiġifieri, par integer, u karattru, u double kollha 22 00:01:02,610 --> 00:01:05,330 fl-istess ħaġa u sejħa li unità waħda. 23 00:01:05,330 --> 00:01:08,830 Iżda ma 'strutturi, jew spiss imsejħa structs, 24 00:01:08,830 --> 00:01:09,585 aħna fil-fatt tista '. 25 00:01:09,585 --> 00:01:12,370 Allura struttura huwa tip ta 'prodotti simili varjabbli super. 26 00:01:12,370 --> 00:01:16,530 Huwa varjabbli li fih varjabbli oħrajn ġewwa ta 'dan. 27 00:01:16,530 --> 00:01:19,650 Allura hawnhekk eżempju ta ' struttura sempliċi ħafna. 28 00:01:19,650 --> 00:01:23,380 Dan huwa dak li l-sintassi look jixtiequ joħolqu struttura għal karozza. 29 00:01:23,380 --> 00:01:25,250 Issa, ejja jgħaddu mill-sintassi hawn. 30 00:01:25,250 --> 00:01:27,400 Struct, dak l- keyword li jindika 31 00:01:27,400 --> 00:01:30,270 li jien ħolqien ta 'tip ta' data ġdida hawn. 32 00:01:30,270 --> 00:01:33,860 B'mod partikolari, l-isem tat-tip tad-data hija se tkun karozza Struct, kif Ser naraw. 33 00:01:33,860 --> 00:01:36,640 Iżda dan huwa t-tip ta 'ponta off għall-kompilatur li din 34 00:01:36,640 --> 00:01:42,440 bħala grupp ta 'varjabbli li ser li jiġu kkunsidrati parti mill-istess tip 35 00:01:42,440 --> 00:01:44,010 fil-minuta. 36 00:01:44,010 --> 00:01:46,340 >> Karozzi, biss l-isem tal-istruttura. 37 00:01:46,340 --> 00:01:50,590 Għal darb'oħra, it-tip tad-data hawn se li jkun karozza Struct, mhux biss karozzi. 38 00:01:50,590 --> 00:01:53,060 Imma jekk għandek different-- jekk inti toħloq structs multipli 39 00:01:53,060 --> 00:01:56,950 fl-istess programm, inti għandek bżonn biex jiddistingwu bejn Struct u Istituzzjonjijiet. 40 00:01:56,950 --> 00:02:00,140 Karozzi sabiex Struct, I jista 'jkollhom ukoll student Struct, per eżempju, 41 00:02:00,140 --> 00:02:01,790 fl-istess programm. 42 00:02:01,790 --> 00:02:05,980 Ġewwa tal-braces kaboċċi huma kollha ta 'l-oqsma hekk imsejħa, 43 00:02:05,980 --> 00:02:07,954 jew membri tal-istruttura. 44 00:02:07,954 --> 00:02:10,370 Allura dak li huma wħud mill-affarijiet li huma inerenti fil-karozza? 45 00:02:10,370 --> 00:02:15,270 Ukoll, normalment ikollu sena, ikun isem mudell, u pjanċa liċenzja, 46 00:02:15,270 --> 00:02:18,000 odometer li normalment ikollu xi numru ta 'mili fuqha, 47 00:02:18,000 --> 00:02:19,225 u forsi daqs tal-magna. 48 00:02:19,225 --> 00:02:23,570 U kif tista 'tara, jien taħlit up interi u l-karattri u doubles. 49 00:02:23,570 --> 00:02:26,420 Huma qed kollha ser ikunu parti ta 'dan it-tip ta' dejta ġdid. 50 00:02:26,420 --> 00:02:29,750 >> Fl-aħħar nett, il-ħaġa finali I bżonn tagħmel, ma ninsewx dan virgola ftit 51 00:02:29,750 --> 00:02:30,290 fl-aħħar. 52 00:02:30,290 --> 00:02:34,380 Wara aħna finitura tiddefinixxi l-istruttura, għandna bżonn li jitqiegħed virgola fi tmiem. 53 00:02:34,380 --> 00:02:37,325 Huwa sintattika komuni ħafna żball, għaliex b'funzjoni, 54 00:02:37,325 --> 00:02:40,200 per eżempju, inti biss għandek Brace kaboċċi miftuħa, Brace kaboċċi qrib. 55 00:02:40,200 --> 00:02:42,950 Inti ma jpoġġux virgola fil- tmiem ta 'definizzjoni funzjoni. 56 00:02:42,950 --> 00:02:46,430 Dan qisu funzjoni definizzjoni, iżda mhux, 57 00:02:46,430 --> 00:02:49,653 u għalhekk il-punt u virgola hemm huwa biss tfakkira li inti 58 00:02:49,653 --> 00:02:52,440 bżonn li titqiegħed hemm, għaliex l kumpilatur se kieku ma 59 00:02:52,440 --> 00:02:53,510 jafu x'għandhom jagħmlu magħha. 60 00:02:53,510 --> 00:02:56,160 Huwa żball komuni ħafna li aċċidentalment tagħmel 61 00:02:56,160 --> 00:02:58,570 meta int l-ewwel jiddefinixxi l-istrutturi. 62 00:02:58,570 --> 00:02:59,500 >> KOLLOX SEW. 63 00:02:59,500 --> 00:03:02,824 Allura aħna normalment jiddefinixxu strutturi tagħna fuq nett tal-programmi tagħna 64 00:03:02,824 --> 00:03:05,490 għaliex qed probabbilment se li għandhom jintużaw mill-funzjonijiet multipli. 65 00:03:05,490 --> 00:03:08,850 Aħna ma rridux li jiddefinixxu Struct ġewwa ta 'funzjoni, 66 00:03:08,850 --> 00:03:12,110 għaliex allura nistgħu only-- l ambitu tal-istruttura verament 67 00:03:12,110 --> 00:03:13,790 jeżisti biss ġewwa ta 'dik il-funzjoni. 68 00:03:13,790 --> 00:03:17,450 Aħna'd probabilment jridu jiddefinixxu struttura hekk nistgħu nużaw fil-funzjonijiet multipli, 69 00:03:17,450 --> 00:03:20,670 jew forsi multipli fajls li huma marbuta flimkien 70 00:03:20,670 --> 00:03:22,920 biex joħolqu programm uniku tagħna. 71 00:03:22,920 --> 00:03:24,920 Kultant ukoll flok tal tiddefinixxi l-istruttura 72 00:03:24,920 --> 00:03:27,961 fuq nett fejn inti tpoġġi tiegħek lira jinkludi u lira tiegħek jiddefinixxi, 73 00:03:27,961 --> 00:03:32,080 per eżempju, inti tista 'tpoġġihom fil files separati dot h, li inti mbagħad 74 00:03:32,080 --> 00:03:35,020 lira jinkludu yourself. 75 00:03:35,020 --> 00:03:37,620 >> Allura aħna għandhom strutturi, iżda issa għandna bżonn li tikseb ġewwa minnhom. 76 00:03:37,620 --> 00:03:39,800 Kif nistgħu tikseb ġewwa ta struttura għall-aċċess 77 00:03:39,800 --> 00:03:43,530 Dawk is-varjabbli, dawk il-varjabbli li jeżistu ġewwa l-istruttura? 78 00:03:43,530 --> 00:03:46,810 Well, aħna għandna xi ħaġa imsejħa l-dot operatur, li jippermetti 79 00:03:46,810 --> 00:03:50,990 aċċess għall-oqsma ta 'l-istruttura. 80 00:03:50,990 --> 00:03:55,490 Hekk per eżempju, ejja ngħidu stajt iddikjarat data istruttura tiegħi tip x'imkien 81 00:03:55,490 --> 00:03:59,020 fil-quċċata tal-programm tiegħi, jew forsi fajl dot h li stajt lira inklużi. 82 00:03:59,020 --> 00:04:03,360 Jekk I imbagħad nixtiequ noħolqu ġdida varjabbli ta 'dak it-tip data, nista' ngħid, 83 00:04:03,360 --> 00:04:06,260 karozza Struct, karozza tiegħi, u virgola. 84 00:04:06,260 --> 00:04:11,580 Eżatt bħal nista 'ngħid int x, jew isem string virgola. 85 00:04:11,580 --> 00:04:18,100 >> Dejta tat-tip hawnhekk hija karozza Struct, l-isem tal-varjabbli huwa karozza tiegħi, 86 00:04:18,100 --> 00:04:23,770 u mbagħad I jistgħu jużaw il-dot operatur biex aċċess għall-oqsma differenti tal-karozza tiegħi. 87 00:04:23,770 --> 00:04:27,494 So I tista 'tgħid karozza tiegħi dot sena ugwali 2011. 88 00:04:27,494 --> 00:04:28,410 Li perfettament multa. 89 00:04:28,410 --> 00:04:34,210 Sena, jekk inti recall, kienet definita bħala qasam sħiħ ġewwa ta din il-karozza Struct 90 00:04:34,210 --> 00:04:35,200 tip ta 'data. 91 00:04:35,200 --> 00:04:39,966 Allura kull varjabbli tad-data karozza Istituzzjonjijiet tip, bħal karozza tiegħi, nista 'ngħid karozza tiegħi 92 00:04:39,966 --> 00:04:44,030 dot sena ugwali u mbagħad tassenja huwa xi valur sħiħ, 2011. 93 00:04:44,030 --> 00:04:47,290 My karozza dot pjanċa ugwali CS50. 94 00:04:47,290 --> 00:04:51,180 My karta dot odometer ugwali 50505 virgola. 95 00:04:51,180 --> 00:04:53,270 Kollha ta 'dawn huma perfettament multa u li 96 00:04:53,270 --> 00:04:57,802 kif aħna aċċess għall- oqsma ta 'l-istruttura. 97 00:04:57,802 --> 00:05:00,260 Strutturi, għalkemm, m'għandhomx bżonn li jiġu maħluqa fuq il-munzell. 98 00:05:00,260 --> 00:05:02,950 Eżatt bħal kull varjabbli ieħor, aħna tista dinamiku jallokahom. 99 00:05:02,950 --> 00:05:06,309 Jekk għandna programm li jista jiġġeneraw ħafna strutturi, 100 00:05:06,309 --> 00:05:08,100 ma nafux kemm aħna qed tmur għall-ħtieġa, 101 00:05:08,100 --> 00:05:10,800 imbagħad għandna bżonn li dinamikament jalloka dawk l-istrutturi 102 00:05:10,800 --> 00:05:12,960 kif programm tagħna qed taħdem. 103 00:05:12,960 --> 00:05:16,600 U hekk jekk aħna qed tmur biex jaċċessaw il- oqsma ta 'struttura fil-kuntest, 104 00:05:16,600 --> 00:05:20,660 irtirar li aħna l-ewwel jeħtieġ li dereference l pointer għall-istruttura, 105 00:05:20,660 --> 00:05:24,810 u mbagħad darba aħna dereference l pointer, allura nistgħu aċċess l-oqsma. 106 00:05:24,810 --> 00:05:26,830 Jekk aħna biss ikollhom pointer li l-istruttura, 107 00:05:26,830 --> 00:05:32,120 ma nistgħux biss jgħidu pointer dot qasam isem u jiksbu dak li aħna qed tfittex. 108 00:05:32,120 --> 00:05:34,259 Hemm il-grad iżjed ta 'dereferencing. 109 00:05:34,259 --> 00:05:36,050 Mela ejja ngħidu li minflok il-previous-- 110 00:05:36,050 --> 00:05:38,770 bħall-eżempju preċedenti, minnflok ma tiddikjara dan 111 00:05:38,770 --> 00:05:43,680 fuq il-munzell, karozza Struct, my karozza, punto virgola, I say karozzi Struct, 112 00:05:43,680 --> 00:05:48,020 star, pointer għal karozza Struct imsejħa karozza tiegħi, 113 00:05:48,020 --> 00:05:51,250 ugwali daqs malloc tal-karozzi Struct. 114 00:05:51,250 --> 00:05:54,950 Daqs tal aħna ser insemmu kemm bytes tip tiegħek tad-data ġdida tibda. 115 00:05:54,950 --> 00:05:58,570 Inti ma għandekx neċessarjament biss bżonn jużaw daqs tal-wisa ', int, jew char, jew kwalunkwe 116 00:05:58,570 --> 00:05:59,715 mit-tipi ta 'data ingastat. 117 00:05:59,715 --> 00:06:02,090 Il kompilatur huwa intelliġenti biżżejjed biex insemmu kif ħafna bytes 118 00:06:02,090 --> 00:06:04,170 huma meħtieġa mill struttura ġdida tiegħek. 119 00:06:04,170 --> 00:06:09,610 So I malloc myself unità ta 'memorja kbir biżżejjed biex iżomm karozza Struct, 120 00:06:09,610 --> 00:06:12,410 u niġi lura pointer għal dak blokk ta 'memorja, 121 00:06:12,410 --> 00:06:16,090 u li pointer huwa assenjat għal karozza tiegħi. 122 00:06:16,090 --> 00:06:18,050 >> Issa, jekk irrid aċċess l-oqsma tal-karozza tiegħi, 123 00:06:18,050 --> 00:06:22,615 I ewwel dereference karozza tiegħi jużaw l-operatur dereference, star 124 00:06:22,615 --> 00:06:26,620 li aħna stajt tidher mill-pointers videos, u mbagħad wara I dereference, 125 00:06:26,620 --> 00:06:32,200 imbagħad I jistgħu jużaw il-dot operatur biex aċċess għall-oqsma differenti tal-karozza tiegħi. 126 00:06:32,200 --> 00:06:35,490 Star karozza tiegħi dot sena ugwali 2011. 127 00:06:35,490 --> 00:06:38,480 Li jkollha l-effett irridu f'dan il-każ, 128 00:06:38,480 --> 00:06:41,960 għaliex aħna ħadthom dinamiku allokati karozza tiegħi. 129 00:06:41,960 --> 00:06:43,610 >> C'est tip ta annoying, għalkemm, id-dritt? 130 00:06:43,610 --> 00:06:44,818 Hemm proċess 2 pass issa. 131 00:06:44,818 --> 00:06:47,460 Issa rridu dereference-- għandna operatur stilla, 132 00:06:47,460 --> 00:06:48,910 u għandna operatur dot. 133 00:06:48,910 --> 00:06:51,660 U kif inti tista 'tistenna, minħabba Programmaturi Ċ imħabba modi iqsar 134 00:06:51,660 --> 00:06:53,740 biex tagħmel affarijiet, hemm mod iqsar biex tagħmel dan. 135 00:06:53,740 --> 00:06:57,790 Hemm operatur oħra msejħa vleġġa, li tagħmel dan il-proċess ħafna aktar faċli. 136 00:06:57,790 --> 00:07:00,750 Il-mod vleġġa jaħdem huwa it ewwel dereferences 137 00:07:00,750 --> 00:07:03,560 l-pointer fuq ix-xellug naħa tal-operatur, 138 00:07:03,560 --> 00:07:06,620 u mbagħad, wara li dereferenced l-pointer fuq ix-xellug, 139 00:07:06,620 --> 00:07:09,620 dan aċċessi-qasam fuq il-lemin. 140 00:07:09,620 --> 00:07:14,170 U hekk qabel kellna dan it-tip ta STAR karozza tiegħi dot dan kollu Jittieħed, 141 00:07:14,170 --> 00:07:15,880 bħal kien hemm ħafna għaddej hemmhekk. 142 00:07:15,880 --> 00:07:22,040 Imma dak li aħna minflok tista 'tagħmel huwa this-- tiegħi sena vleġġa karozza ugwali 2011. 143 00:07:22,040 --> 00:07:23,580 >> Għal darb'oħra, dak li qed jiġri hawn? 144 00:07:23,580 --> 00:07:25,720 L-ewwel, jien dereferencing karozza tiegħi. 145 00:07:25,720 --> 00:07:27,810 Li għal darb'oħra, huwa pointer hawn. 146 00:07:27,810 --> 00:07:31,270 Imbagħad, wara li dereferenced karozza tiegħi, I 147 00:07:31,270 --> 00:07:35,130 allura tista 'aċċess l-oqsma sena, pjanċa, u odometer 148 00:07:35,130 --> 00:07:40,020 daqstant I tista qabel ma l-ewwel star użati biex dereference karozza tiegħi, 149 00:07:40,020 --> 00:07:42,020 u dot biex jaċċessaw il-qasam. 150 00:07:42,020 --> 00:07:45,290 Allura inti jista 'jkollhom strutturi, inti jista 'jkollhom pointers għal strutturi, 151 00:07:45,290 --> 00:07:48,360 u inti għandek modi biex aċċess l-oqsma ta 'dawk l-istrutturi, 152 00:07:48,360 --> 00:07:52,600 jekk għandek pointers għal minnhom jew il-varjabbli nfushom. 153 00:07:52,600 --> 00:07:57,640 Dot jew vleġġa, jiddependi fuq kif il-varjabbli kien iddikjarat. 154 00:07:57,640 --> 00:08:00,510 Jien Doug Lloyd, dan huwa CS50. 155 00:08:00,510 --> 00:08:01,975