1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: Felly, os ydych chi wedi gweld ein fideo ar strwythurau, 3 00:00:07,220 --> 00:00:10,950 ydych chi eisoes yn gwybod bod gennym y gallu i ddiffinio ein mathau data hunain. 4 00:00:10,950 --> 00:00:14,530 Ond os ydych wedi strwythurau a ddefnyddir, eich bod yn gwybod sydd weithiau'n defnyddio rhai mathau o ddata 5 00:00:14,530 --> 00:00:16,446 Gall mewn gwirionedd fod ychydig yn feichus oherwydd ein 6 00:00:16,446 --> 00:00:19,210 rhaid i ni ddefnyddio'r gair allweddol struct pan fyddwn yn gweithio gyda them-- 7 00:00:19,210 --> 00:00:21,257 car struct neu fyfyriwr struct. 8 00:00:21,257 --> 00:00:23,090 Mae hynny'n llawer i deipio os ydym yn unig am gael 9 00:00:23,090 --> 00:00:24,830 rhywbeth syml, fel strwythur. 10 00:00:24,830 --> 00:00:26,390 Rydym yn awyddus i have-- rydym am yn gallu gweithio gyda phethau 11 00:00:26,390 --> 00:00:29,350 ychydig ffordd fwy llaw fer, fel int neu torgoch, rhywbeth llawer 12 00:00:29,350 --> 00:00:31,240 yn fwy cyfleus i deipio. 13 00:00:31,240 --> 00:00:33,100 >> Yn ffodus, mae yna ffordd o wneud hyn yn C, 14 00:00:33,100 --> 00:00:37,150 gyda rhywbeth o'r enw typedef, sef ffordd o greu law-fer neu ailysgrifennu 15 00:00:37,150 --> 00:00:38,640 enwau ar gyfer mathau data. 16 00:00:38,640 --> 00:00:40,720 Gallwch chi ailysgrifennu'r data mathau sydd eisoes yn bodoli, 17 00:00:40,720 --> 00:00:43,970 neu gallwch ysgrifennu mathau o ddata eich hun. 18 00:00:43,970 --> 00:00:46,890 >> Y peth cyntaf y byddwch yn ei wneud yw i chi diffinio yn fath yn y ffordd arferol, 19 00:00:46,890 --> 00:00:52,271 ac yna 'ch jyst Alias ​​i rywbeth else-- enw yr hen typedef enw newydd. 20 00:00:52,271 --> 00:00:53,520 Pretty syml, dde? 21 00:00:53,520 --> 00:00:56,240 Felly, gallem typedef er enghraifft, mae'r data sydd eisoes yn bodoli 22 00:00:56,240 --> 00:01:00,266 math o torgoch heb eu harwyddo fel beit. 23 00:01:00,266 --> 00:01:03,140 Ac yna, o hyn ymlaen, ar ôl i ni gwneud y math hwn definition-- eto, 24 00:01:03,140 --> 00:01:07,570 sydd fel arfer yn mynd i fod ar y brig o'n ffeiliau dot C, neu mewn ffeil H dot 25 00:01:07,570 --> 00:01:10,590 ar wahân, ein gallu yn unig defnyddio brathu ym mhob man 26 00:01:10,590 --> 00:01:12,180 byddem wedi defnyddio torgoch heb eu harwyddo. 27 00:01:12,180 --> 00:01:14,300 Mae hynny'n llawer byrrach i deipio. 28 00:01:14,300 --> 00:01:19,280 >> Yn llyfrgell CS50, rydym yn ei wneud this-- rydym typedef seren torgoch fel llinyn. 29 00:01:19,280 --> 00:01:21,400 Oherwydd ein bod dynnir ymaith y syniad o awgrymiadau. 30 00:01:21,400 --> 00:01:25,072 Ac mae'r ffaith bod llinyn yn wirioneddol pwyntydd i'r character-- cyntaf 31 00:01:25,072 --> 00:01:26,780 amrywiaeth o gymeriadau, am ei fod yn unig 32 00:01:26,780 --> 00:01:29,863 mor ddryslyd i gael eich pen o gwmpas that-- ond mewn gwirionedd dyna beth rydym yn ei wneud. 33 00:01:29,863 --> 00:01:35,140 Ac mae y llinell hon o god yn bodoli mewn gwirionedd mewn llinyn seren torgoch CS50 dot H typedef, 34 00:01:35,140 --> 00:01:39,021 dim ond er mwyn gwneud hynny ychydig yn llai feichus i gael i ddelio ag ef. 35 00:01:39,021 --> 00:01:41,520 Ydych eisoes wedi gweld yn ôl pob tebyg yn ychydig bach o werth yma, 36 00:01:41,520 --> 00:01:44,160 ond typedef yn dod yn wych o'u cyfuno â strwythurau, 37 00:01:44,160 --> 00:01:45,780 gan fy mod yn cyfeirio at gynharach. 38 00:01:45,780 --> 00:01:48,550 Strwythurau cael enw math dau-air. 39 00:01:48,550 --> 00:01:52,020 Ac fel y gallant fod yn wirioneddol blino i greu newidynnau o'r math hwnnw, 40 00:01:52,020 --> 00:01:56,310 neu [Anghlywadwy] o rywbeth struct, eich Gall llinellau dim ond cael iawn, iawn o amser. 41 00:01:56,310 --> 00:01:59,400 Ac fel y gallwch ddefnyddio typedef i ddod o hyd i rywbeth llawer byrrach. 42 00:01:59,400 --> 00:02:04,650 >> Felly, os wyf yn diffinio car fel a ganlyn, yr wyf wedi fy diffiniad o gar struct car--, 43 00:02:04,650 --> 00:02:07,230 ac yna agor cyrliog Brace, pob meysydd fy strwythur, 44 00:02:07,230 --> 00:02:11,030 Brace cyrliog agos, lled-colon-- ar ôl i mi a ddiffinnir fy math data, 45 00:02:11,030 --> 00:02:15,680 Gallaf typedef struct car fel tanlinellu car t. 46 00:02:15,680 --> 00:02:19,670 Ac yna pan fyddaf wedi gwneud hynny, yn awr bob struct amser byddwn wedi defnyddio fel arall 47 00:02:19,670 --> 00:02:22,680 car, gallaf jyst arfer car tanlinellu t. 48 00:02:22,680 --> 00:02:26,480 Mae hynny'n llawer byrrach o ffordd o mynegi syniad hwn o strwythur hwn 49 00:02:26,480 --> 00:02:28,530 yr wyf newydd ei greu. 50 00:02:28,530 --> 00:02:33,620 >> Fel arall, oherwydd bod strwythurau yn cael eu felly ddefnyddir yn gyffredin mewn typedef, 51 00:02:33,620 --> 00:02:37,980 mae a-- alli 'n weithredol ddiffinio'r deipio i mewn rhwng dechrau a diwedd. 52 00:02:37,980 --> 00:02:42,020 Felly mae'r strwythur typedef eto'n Fel arfer typedef, hen enw, enw newydd, 53 00:02:42,020 --> 00:02:45,360 lle yr enwau yn barod mathau eich bod wedi creu. 54 00:02:45,360 --> 00:02:49,620 Ond gallwch mewn gwirionedd yn diffinio strwythur dde yng nghanol y typedef 55 00:02:49,620 --> 00:02:51,760 yn hytrach na gorfod ddiffinio ar wahân, ac yna 56 00:02:51,760 --> 00:02:52,990 gwneud typedef ohono. 57 00:02:52,990 --> 00:02:55,780 A fyddai'n edrych yn union fel car struct typedef this--, 58 00:02:55,780 --> 00:02:59,957 Brace cyrliog agored, eich holl maes diffiniadau, Brace cyrliog agos, t car. 59 00:02:59,957 --> 00:03:03,290 Felly yr hen enw yw holl bethau yn y coch, eich bod newydd diffinio'r strwythur 60 00:03:03,290 --> 00:03:05,610 ac enwi ei ar yr un pryd. 61 00:03:05,610 --> 00:03:07,790 Ac yna yr enw newydd yn tanlinellu car t. 62 00:03:07,790 --> 00:03:10,150 Ac felly os ydym yn dechrau ei ddefnyddio hyn mewn cod, yn flaenorol i mi 63 00:03:10,150 --> 00:03:13,279 allai fod wedi dweud, struct mycar car hanner colon. 64 00:03:13,279 --> 00:03:14,820 Nid Wel mae'n rhaid i mi wneud hynny anymore. 65 00:03:14,820 --> 00:03:20,265 Nawr fy mod i wedi defnyddio'r typedef, yr wyf yn Gall dim ond dweud t tanlinellu car, mycar. 66 00:03:20,265 --> 00:03:22,640 Mae hynny'n llawer byrrach o ffordd i wneud hynny, ac mewn gwirionedd, mae'n 67 00:03:22,640 --> 00:03:24,515 mynd i fod yn llawer mwy cyfleus, yn enwedig 68 00:03:24,515 --> 00:03:27,730 wrth i chi ddechrau defnyddio strwythurau llawer mwy yn eich cod. 69 00:03:27,730 --> 00:03:28,810 >> Rwy'n Doug Lloyd. 70 00:03:28,810 --> 00:03:30,640 Mae hyn yn CS50. 71 00:03:30,640 --> 00:03:32,415