1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 DOUG LLOYD: ดังนั้นถ้าคุณได้ เห็นวิดีโอของเราเกี่ยวกับโครงสร้าง 3 00:00:07,220 --> 00:00:10,950 คุณรู้อยู่แล้วว่าเรามี ความสามารถในการกำหนดชนิดข้อมูลของเราเอง 4 00:00:10,950 --> 00:00:14,530 แต่ถ้าคุณได้โครงสร้างที่ใช้แล้วคุณจะรู้ว่า ว่าบางครั้งการใช้ชนิดข้อมูลเหล่านั้น 5 00:00:14,530 --> 00:00:16,446 สามารถจริงจะเล็ก ๆ น้อย ๆ ยุ่งยากเพราะเรา 6 00:00:16,446 --> 00:00:19,210 ต้องใช้คำหลักที่ struct เมื่อเรากำลังทำงานกับ them-- 7 00:00:19,210 --> 00:00:21,257 รถ struct หรือนักเรียน struct 8 00:00:21,257 --> 00:00:23,090 นั่นเป็นจำนวนมากในการพิมพ์ ถ้าเราเพียงแค่ต้องการที่จะมี 9 00:00:23,090 --> 00:00:24,830 สิ่งที่ง่ายเช่นโครงสร้าง 10 00:00:24,830 --> 00:00:26,390 เราต้องการที่จะ have-- เราต้องการที่จะ สามารถที่จะทำงานกับสิ่งที่ 11 00:00:26,390 --> 00:00:29,350 วิธีการจดชวเลขน้อยมาก เช่น int หรือถ่านบางสิ่งบางอย่างมาก 12 00:00:29,350 --> 00:00:31,240 สะดวกสบายในการพิมพ์ 13 00:00:31,240 --> 00:00:33,100 >> โชคดีที่มี วิธีที่จะทำเช่นนี้ในซี 14 00:00:33,100 --> 00:00:37,150 กับสิ่งที่เรียกว่า typedef ซึ่งเป็น วิธีการสร้างชวเลขหรือเขียนใหม่ 15 00:00:37,150 --> 00:00:38,640 ชื่อชนิดข้อมูล 16 00:00:38,640 --> 00:00:40,720 คุณสามารถเขียนข้อมูล ชนิดที่มีอยู่แล้ว, 17 00:00:40,720 --> 00:00:43,970 หรือคุณสามารถเขียนชนิดข้อมูลของท่านเอง 18 00:00:43,970 --> 00:00:46,890 >> สิ่งแรกที่คุณต้องทำคือคุณ กำหนดประเภทในทางปกติ 19 00:00:46,890 --> 00:00:52,271 และแล้วคุณก็นามแฝงไปยังบางสิ่งบางอย่าง else-- typedef ชื่อเดิมชื่อใหม่ 20 00:00:52,271 --> 00:00:53,520 ตรงไปตรงสวยใช่มั้ย? 21 00:00:53,520 --> 00:00:56,240 เพื่อให้เราสามารถ typedef ตัวอย่างเช่น ข้อมูลที่มีอยู่แล้ว 22 00:00:56,240 --> 00:01:00,266 ชนิดของถ่านที่ไม่ได้ลงชื่อเป็นไบต์ 23 00:01:00,266 --> 00:01:03,140 แล้วจากนี้ไปหลังจากที่เราได้ ทำประเภทนี้อีกครั้ง definition--, 24 00:01:03,140 --> 00:01:07,570 ซึ่งมักจะเป็นไปได้ที่ด้านบน ของจุด C ไฟล์ของเราหรือในแฟ้ม H จุด 25 00:01:07,570 --> 00:01:10,590 แยกที่เราสามารถทำได้เพียงแค่ ใช้กัดทุกที่ 26 00:01:10,590 --> 00:01:12,180 เราจะได้ใช้ถ่านที่ไม่ได้ลงชื่อ 27 00:01:12,180 --> 00:01:14,300 นั่นเป็นจำนวนมากสั้นพิมพ์ 28 00:01:14,300 --> 00:01:19,280 >> ในห้องสมุด CS50 ที่เราทำ this-- เรา typedef ดาวถ่านเป็นสตริง 29 00:01:19,280 --> 00:01:21,400 เพราะเราใจลอย ออกไปความคิดของตัวชี้ 30 00:01:21,400 --> 00:01:25,072 และความจริงที่ว่าสตริงเป็นจริง ตัวชี้ไปยัง character-- แรก 31 00:01:25,072 --> 00:01:26,780 อาร์เรย์ของตัวอักษรที่ เพราะมันเป็นเพียง 32 00:01:26,780 --> 00:01:29,863 เพื่อให้เกิดความสับสนที่จะได้รับหัวของรอบ that-- แต่ในความเป็นจริงนั่นคือสิ่งที่เราทำ 33 00:01:29,863 --> 00:01:35,140 และสายของรหัสนี้มีอยู่จริง ใน CS50 จุด H typedef สตริงดาวถ่าน, 34 00:01:35,140 --> 00:01:39,021 เพียงเพื่อให้เห็นว่าน้อยไปหน่อย ยุ่งยากในการมีการจัดการกับ 35 00:01:39,021 --> 00:01:41,520 แล้วคุณเคยเห็นอาจจะเป็น นิด ๆ หน่อย ๆ ของมูลค่าที่นี่ 36 00:01:41,520 --> 00:01:44,160 แต่กลายเป็นดี typedef เมื่อรวมกับโครงสร้าง 37 00:01:44,160 --> 00:01:45,780 ขณะที่ผมพูดพาดพิงถึงก่อนหน้านี้ 38 00:01:45,780 --> 00:01:48,550 โครงสร้างมีชื่อประเภทสองคำ 39 00:01:48,550 --> 00:01:52,020 และเพื่อให้พวกเขาสามารถเป็นที่น่ารำคาญจริงๆ เพื่อสร้างตัวแปรประเภทที่ 40 00:01:52,020 --> 00:01:56,310 หรือ [ไม่ได้ยิน] ของบางสิ่งบาง struct ของคุณ เส้นก็สามารถได้รับจริงๆนานจริงๆ 41 00:01:56,310 --> 00:01:59,400 และเพื่อให้คุณสามารถใช้ typedef ที่จะมา กับสิ่งที่สั้นมาก 42 00:01:59,400 --> 00:02:04,650 >> ดังนั้นถ้าผมกำหนดรถดังต่อไปนี้ฉันมี คำนิยามของฉันของรถ struct car--, 43 00:02:04,650 --> 00:02:07,230 แล้วเปิดวงเล็บปีกกาทั้งหมด ด้านของโครงสร้างของฉัน 44 00:02:07,230 --> 00:02:11,030 ใกล้วงเล็บปีกกากึ่ง colon-- หลังจากที่ผมได้กำหนดชนิดข้อมูลของฉัน 45 00:02:11,030 --> 00:02:15,680 ฉันสามารถ typedef struct รถเป็นรถขีดที 46 00:02:15,680 --> 00:02:19,670 และจากนั้นเมื่อฉันได้ทำว่าตอนนี้ทุกคน เวลาที่ผมจะได้ใช้อย่างอื่น struct 47 00:02:19,670 --> 00:02:22,680 รถผมก็สามารถใช้รถขีดที 48 00:02:22,680 --> 00:02:26,480 นั่นเป็นจำนวนมากอันสั้นวิธีการ แสดงความคิดของโครงสร้างนี้ 49 00:02:26,480 --> 00:02:28,530 ที่ฉันเพิ่งสร้าง 50 00:02:28,530 --> 00:02:33,620 >> อีกทางเลือกหนึ่งเพราะโครงสร้าง จึงใช้กันทั่วไปใน typedef, 51 00:02:33,620 --> 00:02:37,980 มี a-- คุณจริงสามารถกำหนด พิมพ์ในระหว่างจุดเริ่มต้นและจุดสิ้นสุด 52 00:02:37,980 --> 00:02:42,020 ดังนั้นโครงสร้าง typedef อีกครั้ง มักจะ typedef ชื่อเก่าชื่อใหม่ 53 00:02:42,020 --> 00:02:45,360 ชื่อที่มีอยู่แล้ว ชนิดที่คุณได้สร้าง 54 00:02:45,360 --> 00:02:49,620 แต่คุณจริงสามารถกำหนดโครงสร้าง ขวาตรงกลางของ typedef ที่ 55 00:02:49,620 --> 00:02:51,760 แทนที่จะต้องกำหนด มันแยกกันแล้ว 56 00:02:51,760 --> 00:02:52,990 ทำ typedef ของมัน 57 00:02:52,990 --> 00:02:55,780 และที่จะมีลักษณะเช่นเดียวกับ this-- typedef struct รถ, 58 00:02:55,780 --> 00:02:59,957 วงเล็บปีกกาเปิดทุกสาขาของคุณ นิยามวงเล็บปีกกาใกล้ทีรถ 59 00:02:59,957 --> 00:03:03,290 ดังนั้นชื่อเดิมคือทุกสิ่งที่อยู่ใน สีแดง, คุณเพียงแค่การกำหนดโครงสร้าง 60 00:03:03,290 --> 00:03:05,610 และตั้งชื่อมันในเวลาเดียวกัน 61 00:03:05,610 --> 00:03:07,790 แล้วชื่อใหม่ รถขีดที 62 00:03:07,790 --> 00:03:10,150 ดังนั้นถ้าเราเริ่มต้นที่จะใช้ นี้ในรหัสก่อนหน้านี้ฉัน 63 00:03:10,150 --> 00:03:13,279 อาจจะกล่าวว่า struct รถ MyCar กึ่งลำไส้ใหญ่ 64 00:03:13,279 --> 00:03:14,820 ดีฉันจะได้ไม่ต้องทำอย่างนั้นอีกต่อไป 65 00:03:14,820 --> 00:03:20,265 ตอนนี้ที่ผมเคยใช้ typedef ผม ก็สามารถบอกว่ารถขีดที MyCar 66 00:03:20,265 --> 00:03:22,640 นั่นเป็นจำนวนมากอันสั้นทาง ที่จะทำมันและในความเป็นจริงมัน 67 00:03:22,640 --> 00:03:24,515 ไปได้มากขึ้น สะดวกโดยเฉพาะอย่างยิ่ง 68 00:03:24,515 --> 00:03:27,730 ที่คุณเริ่มต้นที่จะใช้โครงสร้าง มากขึ้นในรหัสของคุณ 69 00:03:27,730 --> 00:03:28,810 >> ฉันลอยด์ดั๊ก 70 00:03:28,810 --> 00:03:30,640 นี่คือ CS50 71 00:03:30,640 --> 00:03:32,415