1 00:00:00,000 --> 00:00:04,970 2 00:00:04,970 --> 00:00:07,220 דאג 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 אנחנו רוצים נו-- אנחנו רוצים להיות מסוגל לעבוד עם דברים 11 00:00:26,390 --> 00:00:29,350 דרך קצרנות יותר קטנה, כמו int או char, משהו הרבה 12 00:00:29,350 --> 00:00:31,240 יותר נוח להקליד. 13 00:00:31,240 --> 00:00:33,100 >> למרבה המזל, יש דרך לעשות זאת ב- C, 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 סוג char חתום כבתים. 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 היינו משתמש char חתום. 27 00:01:12,180 --> 00:01:14,300 זה הרבה יותר קצר להקליד. 28 00:01:14,300 --> 00:01:19,280 >> בספרייה של CS50, אנחנו עושים זה-- אנחנו typedef כוכב char כמחרוזת. 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 כל כך מבלבל כדי לקבל את הראש סביב לראות-- אבל למעשה זה מה שאנחנו עושים. 33 00:01:29,863 --> 00:01:35,140 והקו הזה של קוד קיים למעשה במחרוזת הכוכבים char CS50 הנקודה typedef H, 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 מכונית כt תחתון מכונית. 46 00:02:15,680 --> 00:02:19,670 ואז, כשאני כבר עשיתי את זה, עכשיו כל struct זמן הייתי בשימוש אחר 47 00:02:19,670 --> 00:02:22,680 מכונית, אני יכול פשוט להשתמש t התחתון מכונית. 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 יש זה-- אתה באמת יכול להגדיר את הקלד בין ההתחלה והסוף. 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 וזה היה נראה בדיוק כמו המכונית struct typedef זה--, 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