2 00:00:00,000 --> 00:00:02,760 >> سرور 1: دعونا كتابة البرنامج الذي يطالب المستخدم عن أسماء و 3 00:00:02,760 --> 00:00:04,700 بيوت ثلاثة طلاب. 4 00:00:04,700 --> 00:00:08,840 الآن، لتخزين تلك الأسماء والمنازل يمكن أن نستخدمها، ما، ستة متغيرات. 5 00:00:08,840 --> 00:00:12,260 ثلاث سلاسل للأسماء، وآخر ثلاث سلاسل للمنازل، 6 00:00:12,260 --> 00:00:16,560 ولكننا نعلم بالفعل أن نتمكن من تنظيف هذا الرمز باستخدام صفائف بدلا من ذلك، 7 00:00:16,560 --> 00:00:20,220 على سبيل المثال مجموعة من حجم 3 ل ثلاثة أسماء، ومجموعة أخرى من 8 00:00:20,220 --> 00:00:22,110 حجم 3 لالمنازل. 9 00:00:22,110 --> 00:00:25,870 ولكن تبين أننا يمكن تنظيف هذا أبعد من ذلك، وبالفعل تبقى تلك 10 00:00:25,870 --> 00:00:30,520 أسماء والبيوت معا، بحيث اسم الطالب وله أو بيتها 11 00:00:30,520 --> 00:00:34,940 يتم تغليف بطريقة أو بأخرى، وذلك ل الكلام، في نفس المتغير. 12 00:00:34,940 --> 00:00:39,095 >> للقيام بذلك، على الرغم من أننا بحاجة إلى إعلان لدينا نوع البيانات الخاصة، ونوع في منطقتنا C، 13 00:00:39,095 --> 00:00:42,660 أن واضعي C فعل ليس بالضرورة التفكير منذ سنوات. 14 00:00:42,660 --> 00:00:45,630 للقيام بذلك يمكننا استخدام الكلمة الرموز المميزة ل typedef، جنبا إلى جنب مع 15 00:00:45,630 --> 00:00:47,200 غيرها من البنية الكلمة. 16 00:00:47,200 --> 00:00:48,160 دعونا نلقي نظرة. 17 00:00:48,160 --> 00:00:50,650 داخل structs.h، لقد بالفعل حصلت التي كتبها 18 00:00:50,650 --> 00:00:52,560 بما في ذلك مكتبة CS50. 19 00:00:52,560 --> 00:00:57,640 انا ذاهب بجانب اكتب الرموز المميزة ل typedef البنية، ثم متعرج. 20 00:00:57,640 --> 00:01:01,370 داخل البنية، وانا ذاهب ل تحديد أن الطالب يكون له 21 00:01:01,370 --> 00:01:04,960 سلسلة دعا اسمه، وآخر سلسلة دعا البيت. 22 00:01:04,960 --> 00:01:08,430 انا ذاهب الى بلدي ثم إغلاق الأقواس المتعرجة، وحدد أن اسم 23 00:01:08,430 --> 00:01:11,420 هذا النوع يجب أن يكون الطالب البيانات الجديدة. 24 00:01:11,420 --> 00:01:15,550 وبعبارة أخرى، عبر بناء الجملة هذا يكون أنا أعلن نوع بيانات جديدة من بلدي 25 00:01:15,550 --> 00:01:19,910 التي لم تكن موجودة قبل لحظة، و داخل هذا النوع من البيانات هي البيانات اثنين 26 00:01:19,910 --> 00:01:24,270 الحقول أو أعضاء البيانات، واحد يسمى اسمها، واحد يسمى المنزل، وكلاهما 27 00:01:24,270 --> 00:01:25,630 هي من نوع السلسلة. 28 00:01:25,630 --> 00:01:27,690 >> دعونا الآن استخدام هذا النوع في برنامج الفعلية. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 في structs0.c، لقد حصلت على نحو مماثل نفسي بدأت بالفعل مع بعض 31 00:01:34,090 --> 00:01:36,999 كود النمطي، وأنا الآن تنوي استخدام هذه البيانات 32 00:01:36,999 --> 00:01:39,100 اكتب الطالب، على النحو التالي. 33 00:01:39,100 --> 00:01:42,450 انا ذاهب الأولى لإعلان مجموعة من نوع الطالب، وسوف أكون 34 00:01:42,450 --> 00:01:43,920 استدعاء الطلاب مجموعة - 35 00:01:43,920 --> 00:01:44,630 الجمع - 36 00:01:44,630 --> 00:01:49,360 وسوف تحدد أن حجمه سيكون الثلاثة، والتي، لاحظ، هو قيمة 37 00:01:49,360 --> 00:01:50,880 الطلاب المستمر - 38 00:01:50,880 --> 00:01:51,890 في جميع عواصم - 39 00:01:51,890 --> 00:01:54,930 لقد أعلن أنه هنا، في ملف في وقت سابق. 40 00:01:54,930 --> 00:01:58,280 دعونا الآن أكثر من تكرار هؤلاء الثلاثة الطلاب، ومطالبة المستخدم 41 00:01:58,280 --> 00:02:00,050 أسمائهم والمنازل. 42 00:02:00,050 --> 00:02:05,422 >> للحصول على كثافة العمليات ط 0، ط أقل من أن المراجعة المستمرة، ط + +. 43 00:02:05,422 --> 00:02:08,600 والآن داخل الجسم من هذا ل حلقة، وانا ذاهب لطباعة شيء 44 00:02:08,600 --> 00:02:11,470 مثل اسم الطالب. 45 00:02:11,470 --> 00:02:14,890 أنا ثم الذهاب للحصول الواقع أن اسم الطالب عن طريق تحديد 46 00:02:14,890 --> 00:02:17,290 الطلاب قوس ط. 47 00:02:17,290 --> 00:02:21,550 وبعبارة أخرى أريد الطالب ط ال في مجموعة تسمى الطلاب، ولكن الآن 48 00:02:21,550 --> 00:02:25,340 أريد الحصول في ذلك ط ال طالب اسم، والقيام بذلك، انا ذاهب الى استخدام 49 00:02:25,340 --> 00:02:30,160 و. المشغل، من أجل الحصول على داخل حقل معين من البنية. 50 00:02:30,160 --> 00:02:37,100 ولذا فإنني تحديد الطلاب قوس ط. اسم يحصل على قيمة الإرجاع GetString (). 51 00:02:37,100 --> 00:02:40,310 وفي الوقت نفسه، انا ذاهب لطباعة شيئا من هذا القبيل، وقال الطالب 52 00:02:40,310 --> 00:02:45,410 المنزل، والآن أنا ذاهب لتحديد أن الحقل الطلاب منزل ط ال 53 00:02:45,410 --> 00:02:49,480 يجب الحصول على قيمة الإرجاع مكالمة أخرى إلى GetString (). 54 00:02:49,480 --> 00:02:52,350 >> الآن دعونا نفعل شيئا مع هؤلاء الثلاثة أسماء الطلاب والمنازل، 55 00:02:52,350 --> 00:02:56,230 شيء بسيط مثل الطباعة كل من في الجملة. 56 00:02:56,230 --> 00:03:07,580 للحصول على كثافة العمليات ط 0، ومرة ​​أخرى أنا أقل من الطلاب، ط + +، printf "٪ s في٪ ق. 57 00:03:07,580 --> 00:03:12,600 مائل ن "، والآن اسمحوا لي أن سد العجز في قيم تلك الحقول اثنين، 58 00:03:12,600 --> 00:03:19,055 الطلاب قوس ط. الاسم، فاصلة، الطلاب قوس ط. المنزل، على مقربة 59 00:03:19,055 --> 00:03:21,290 PAREN، منقوطة. 60 00:03:21,290 --> 00:03:23,020 >> والآن يجب أن أفعل شيئا آخر. 61 00:03:23,020 --> 00:03:26,600 في الجزء السفلي من هذا الملف، ولست بحاجة ل تحرير الذاكرة التي تم تخصيصها 62 00:03:26,600 --> 00:03:30,290 وراء الكواليس من قبل GetSring ()، الذي يدعو بالطبع malloc، من أجل 63 00:03:30,290 --> 00:03:32,500 تخصيص الذاكرة لسلاسل أنواع المستخدم. 64 00:03:32,500 --> 00:03:35,720 ولكن هذا هو بسيط. 65 00:03:35,720 --> 00:03:42,610 للحصول على كثافة العمليات ط 0، ط أقل من الطلاب، ط + +، وداخل جسد 66 00:03:42,610 --> 00:03:48,670 هذا للحلقة، وأنا ببساطة الذهاب الى توفير قوس الطلاب مجانا ط. الاسم، 67 00:03:48,670 --> 00:03:52,300 والطلاب مجانا قوس ط. المنزل. 68 00:03:52,300 --> 00:03:55,620 >> الآن، ونحن قد استخدمت بشكل واضح لثلاث حلقات في هذا البرنامج، عندما حقا أنا 69 00:03:55,620 --> 00:03:58,800 يمكن أن تستخدم واحدة فقط، ولكن هذا هو فقط لمجرد مظاهرة، بحيث 70 00:03:58,800 --> 00:04:02,850 يمكننا تحديد في ثلاثة متميزة الخطوات بالضبط ما نفعله. 71 00:04:02,850 --> 00:04:06,120 نحن نحصل على أول اسم ومنزل لكل من الطلاب، ونحن بعد ذلك 72 00:04:06,120 --> 00:04:08,900 طبع اسم وبيت ل كل من الطلاب الثلاثة، و 73 00:04:08,900 --> 00:04:11,910 ثم ونحن في طريقنا لتحرير الذاكرة المستخدمة من قبل كل من الطلاب. 74 00:04:11,910 --> 00:04:15,310 ولكن من المؤكد أننا يمكن أن لقد الجمع بين هذه في واحدة أكبر للحلقة. 75 00:04:15,310 --> 00:04:18,650 >> دعونا الآن حفظ وتجميع، وتشغيل هذا البرنامج. 76 00:04:18,650 --> 00:04:26,850 جعل البنيات 0. / البنيات 0، الطالب اسم، دعونا توفير ديفيد، وانه سوف يعيش 77 00:04:26,850 --> 00:04:31,580 في ماثر البيت، اسم الطالب، دعونا ويقول لورين، وقالت انها سوف تعيش في يفيريت 78 00:04:31,580 --> 00:04:36,590 المنزل، اسم الطالب، روب، وانه سوف يعيش في بيت كيركلاند. 79 00:04:36,590 --> 00:04:39,440 وبالفعل، ديفيد هو في ماذر، لورين هو في يفيريت، 80 00:04:39,440 --> 00:04:40,810 وروب هو في كيركلاند. 81 00:04:40,810 --> 00:04:43,425