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 სამი strings სახელები და სხვა სამი სტრიქონებს სახლები, 6 00:00:12,260 --> 00:00:16,560 მაგრამ ჩვენ უკვე ვიცით, რომ შეიძლება სუფთა up რომ კოდი გამოყენებით მასივები ნაცვლად, 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 მაგრამ აღმოჩნდება, რომ ჩვენ შეგვიძლია გაწმენდა ამ up შემდგომი მაინც, და რეალურად შენარჩუნება იმ 10 00:00:25,870 --> 00:00:30,520 სახელები და სახლები ერთად, ისე, რომ სტუდენტის სახელი და მისი სახლი 11 00:00:30,520 --> 00:00:34,940 როგორღაც encapsulated, ასე ვთქვათ, იმავე ცვლადი. 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 სხვა სიტყვით struct. 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 struct, და შემდეგ Curly გაუწიოს. 20 00:00:57,640 --> 00:01:01,370 შიგნით struct, მე ვაპირებ დააკონკრეტა, რომ სტუდენტს უნდა ჰქონდეს 21 00:01:01,370 --> 00:01:04,960 string მოუწოდა სახელით, და სხვა string მოუწოდა სახლში. 22 00:01:04,960 --> 00:01:08,430 მე ვაპირებ შემდეგ დახუროს ჩემი curly აფრთხილებს, და დააკონკრეტა, რომ სახელი 23 00:01:08,430 --> 00:01:11,420 ამ ახალი მონაცემები ტიპის უნდა იყოს სტუდენტი. 24 00:01:11,420 --> 00:01:15,550 სხვა სიტყვებით, მეშვეობით სინტაქსი აქვს I განაცხადა, ახალი მონაცემები ტიპის საკუთარი 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 რა ტიპის string. 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 In structs0.c, მე ასევე მიღებული თვითონ დაიწყო ზოგიერთი 31 00:01:34,090 --> 00:01:36,999 boilerplate კოდი და მე ახლა აპირებს გამოიყენოს ეს მონაცემები 32 00:01:36,999 --> 00:01:39,100 ჩაწერეთ სტუდენტი, ასეთია. 33 00:01:39,100 --> 00:01:42,450 მე პირველი აპირებს გამოაცხადოს array ტიპის სტუდენტი, მე 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 მოდით ახლა iterate მეტი იმ სამი სტუდენტები და შეეკითხება მომხმარებელს ამისთვის 41 00:01:58,280 --> 00:02:00,050 მათი სახელები და სახლები. 42 00:02:00,050 --> 00:02:05,422 >> განთავსების int i კიდევ 0, i ნაკლებია, ვიდრე, რომ მუდმივი, i + +. 43 00:02:05,422 --> 00:02:08,600 და ახლა შიგნით ორგანოს ამ loop, მე ვაპირებ ამობეჭდოთ რაღაც 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 სტუდენტები bracket i. 47 00:02:17,290 --> 00:02:21,550 სხვა სიტყვებით მინდა i-th სტუდენტი მასივი მოუწოდა სტუდენტებს, მაგრამ ახლა 48 00:02:21,550 --> 00:02:25,340 მინდა კიდევ, რომ i-ში სტუდენტის სახელი, და ამის გაკეთება, მე ვაპირებ გამოყენება 49 00:02:25,340 --> 00:02:30,160 . ოპერატორი, რათა მიიღოთ ერთი კონკრეტული სფეროს შიგნით struct. 50 00:02:30,160 --> 00:02:37,100 ასე რომ, მე დააკონკრეტა სტუდენტებისთვის bracket i. სახელი იღებს დაბრუნების ღირებულება GetString (). 51 00:02:37,100 --> 00:02:40,310 ამასობაში, მე ვაპირებ ამობეჭდოთ რაღაც მსგავსი და განაცხადა, რომ სტუდენტის მიერ 52 00:02:40,310 --> 00:02:45,410 სახლში, და ახლა მე ვაპირებ მიუთითოთ რომ i-th სტუდენტებისთვის სახლი ველი 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 განთავსების int i მისაღებად 0, კვლავ i ნაკლებია, ვიდრე სტუდენტები, i + +, printf "% s არის% s. 57 00:03:07,580 --> 00:03:12,600 backslash n "და ახლა ნება მომეცით plug in ღირებულებები ამ ორი სფეროებში, 58 00:03:12,600 --> 00:03:19,055 სტუდენტები bracket i. სახელი, გვარი, მძიმე, სტუდენტები bracket i. სახლი ახლოს, 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 განთავსების int i კიდევ 0, i ნაკლებია, ვიდრე სტუდენტები, i + +, და შიგნით ორგანოს 66 00:03:42,610 --> 00:03:48,670 ამ for loop, მე უბრალოდ აპირებს გთავაზობთ უფასო სტუდენტებისთვის bracket i. სახელი, 67 00:03:48,670 --> 00:03:52,300 და თავისუფალი სტუდენტი bracket i. სახლი. 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 მაგრამ აუცილებლად, ჩვენ ვერ მოვისმინეთ გავაერთიანებთ ერთ დიდი for loop. 75 00:04:15,310 --> 00:04:18,650 >> მოდით ახლა გადარჩენა, კომპილაციის, და აწარმოებს ამ პროგრამის. 76 00:04:18,650 --> 00:04:26,850 რათა structs 0. / structs 0, სტუდენტის ასახელებს, მოდით გთავაზობთ დავითი, მაშინ ის ცხოვრობს 77 00:04:26,850 --> 00:04:31,580 წელს Mather სახლი, სტუდენტის სახელი, მოდით ამბობენ Lauren, იგი ყველაფერს ცხოვრობს LEVERETT 78 00:04:31,580 --> 00:04:36,590 კერძო სახლი, სტუდენტის სახელი, Rob, მაშინ ის ცხოვრობს Kirkland სახლი. 79 00:04:36,590 --> 00:04:39,440 და მართლაც, დავითი არის Mather, Lauren არის LEVERETT, 80 00:04:39,440 --> 00:04:40,810 და რობ არის Kirkland. 81 00:04:40,810 --> 00:04:43,425