2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 1: Hãy viết một chương trình nhắc nhở người dùng cho tên và 3 00:00:02,760 --> 00:00:04,700 nhà của ba sinh viên. 4 00:00:04,700 --> 00:00:08,840 Bây giờ, để lưu trữ những cái tên và những ngôi nhà chúng ta có thể sử dụng, những gì, sáu biến. 5 00:00:08,840 --> 00:00:12,260 Ba dây cho các tên, và một ba dây cho nhà ở, 6 00:00:12,260 --> 00:00:16,560 nhưng chúng ta đã biết rằng chúng ta có thể làm sạch mã bằng cách sử dụng các mảng thay vào đó, 7 00:00:16,560 --> 00:00:20,220 Ví dụ một mảng có kích thước 3 cho ba tên, và một loạt các 8 00:00:20,220 --> 00:00:22,110 kích thước 3 cho ngôi nhà. 9 00:00:22,110 --> 00:00:25,870 Nhưng hóa ra chúng ta có thể làm sạch này lên hơn nữa vẫn còn, và thực sự giữ những 10 00:00:25,870 --> 00:00:30,520 tên và nhà với nhau, do đó, một tên học sinh và nhà của mình 11 00:00:30,520 --> 00:00:34,940 bằng cách nào đó đóng gói, do đó, để nói, vào cùng một biến. 12 00:00:34,940 --> 00:00:39,095 >> Để làm điều này, tuy nhiên, chúng ta cần phải khai báo kiểu dữ liệu riêng của chúng tôi, loại của chúng ta trong C, 13 00:00:39,095 --> 00:00:42,660 mà các tác giả của C không nhất thiết phải nghĩ của năm trước. 14 00:00:42,660 --> 00:00:45,630 Để làm điều này chúng ta có thể sử dụng từ khóa typedef, cùng với các 15 00:00:45,630 --> 00:00:47,200 cấu trúc từ khóa khác. 16 00:00:47,200 --> 00:00:48,160 Chúng ta hãy có một cái nhìn. 17 00:00:48,160 --> 00:00:50,650 Bên trong structs.h, tôi đã đã nhận được bắt đầu bởi 18 00:00:50,650 --> 00:00:52,560 bao gồm các thư viện CS50. 19 00:00:52,560 --> 00:00:57,640 Tôi tiếp theo sẽ gõ cấu trúc typedef, và sau đó là một cú đúp xoăn. 20 00:00:57,640 --> 00:01:01,370 Bên trong các cấu trúc, tôi sẽ xác định rằng học sinh sẽ có một 21 00:01:01,370 --> 00:01:04,960 chuỗi gọi tên, và một chuỗi được gọi là nhà. 22 00:01:04,960 --> 00:01:08,430 Tôi sẽ sau đó đóng dấu ngoặc nhọn của tôi, và xác định rằng tên của 23 00:01:08,430 --> 00:01:11,420 kiểu dữ liệu mới này sẽ là sinh viên. 24 00:01:11,420 --> 00:01:15,550 Nói cách khác, thông qua cú pháp này có tôi tuyên bố một kiểu dữ liệu mới của riêng tôi 25 00:01:15,550 --> 00:01:19,910 không tồn tại một thời điểm trước đây, và bên trong của kiểu dữ liệu này là hai dữ liệu 26 00:01:19,910 --> 00:01:24,270 các lĩnh vực hoặc các thành viên dữ liệu, một được gọi là tên, một gọi là nhà, cả hai đều 27 00:01:24,270 --> 00:01:25,630 là kiểu string. 28 00:01:25,630 --> 00:01:27,690 >> Bây giờ hãy sử dụng loại trong một chương trình thực tế. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 Trong structs0.c, tôi đã nhận được tương tự bản thân mình bắt đầu với một số đã 31 00:01:34,090 --> 00:01:36,999 đang soạn, và tôi bây giờ sẽ sử dụng dữ liệu này 32 00:01:36,999 --> 00:01:39,100 loại sinh viên, như sau. 33 00:01:39,100 --> 00:01:42,450 Tôi đầu tiên sẽ khai báo một mảng kiểu sinh viên, tôi sẽ 34 00:01:42,450 --> 00:01:43,920 gọi các sinh viên mảng - 35 00:01:43,920 --> 00:01:44,630 số nhiều - 36 00:01:44,630 --> 00:01:49,360 và tôi sẽ xác định rằng kích thước của nó sẽ là ba, trong đó, thông báo, là giá trị của 37 00:01:49,360 --> 00:01:50,880 các HỌC SINH liên tục - 38 00:01:50,880 --> 00:01:51,890 trong tất cả các thủ đô - 39 00:01:51,890 --> 00:01:54,930 mà tôi đã tuyên bố lên đây, trước đó trong tập tin. 40 00:01:54,930 --> 00:01:58,280 Bây giờ chúng ta lặp qua ba học sinh, và nhắc nhở người dùng 41 00:01:58,280 --> 00:02:00,050 tên và ngôi nhà của họ. 42 00:02:00,050 --> 00:02:05,422 >> cho int tôi nhận được 0, i nhỏ hơn liên tục, i + +. 43 00:02:05,422 --> 00:02:08,600 Và bây giờ bên trong cơ thể của điều này cho vòng lặp, tôi sẽ in ra một cái gì đó 44 00:02:08,600 --> 00:02:11,470 như tên của học sinh. 45 00:02:11,470 --> 00:02:14,890 Tôi sau đó sẽ thực sự nhận được rằng tên học sinh bằng cách xác định 46 00:02:14,890 --> 00:02:17,290 sinh viên trong ngoặc tôi. 47 00:02:17,290 --> 00:02:21,550 Nói cách khác tôi muốn học sinh thứ i trong mảng được gọi là sinh viên, nhưng bây giờ 48 00:02:21,550 --> 00:02:25,340 Tôi muốn nhận được ở đó thứ i của học sinh tên, và để làm điều này, tôi sẽ sử dụng 49 00:02:25,340 --> 00:02:30,160 các. điều hành, để có được một trường bên trong cụ thể của các cấu trúc. 50 00:02:30,160 --> 00:02:37,100 Vì vậy, tôi chỉ định sinh viên trong ngoặc i tên. được giá trị trở lại của GetString (). 51 00:02:37,100 --> 00:02:40,310 Trong khi đó, tôi sẽ in ra một cái gì đó tương tự, nói rằng học sinh 52 00:02:40,310 --> 00:02:45,410 nhà, và bây giờ tôi sẽ chỉ định rằng trường nhà sinh viên thứ i 53 00:02:45,410 --> 00:02:49,480 sẽ có giá trị trả lại một cuộc gọi đến GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Bây giờ chúng ta hãy làm điều gì đó với ba tên và nhà của học sinh, 55 00:02:52,350 --> 00:02:56,230 một cái gì đó đơn giản như in ấn mỗi ra trong một câu. 56 00:02:56,230 --> 00:03:07,580 cho int tôi nhận được 0, một lần nữa tôi là ít hơn sinh viên, i + +, printf "% s trong% s. 57 00:03:07,580 --> 00:03:12,600 dấu gạch chéo ngược n ", và bây giờ hãy để tôi cắm các giá trị của hai lĩnh vực, 58 00:03:12,600 --> 00:03:19,055 sinh viên trong ngoặc i tên., dấu phẩy, sinh viên trong ngoặc tôi. nhà, gần 59 00:03:19,055 --> 00:03:21,290 Dấu ngoặc đơn, dấu chấm phẩy. 60 00:03:21,290 --> 00:03:23,020 >> Và bây giờ tôi cần phải làm một điều nữa. 61 00:03:23,020 --> 00:03:26,600 Ở dưới cùng của tập tin này, tôi cần phải giải phóng bộ nhớ đã được phân bổ 62 00:03:26,600 --> 00:03:30,290 đằng sau hậu trường của GetSring (), mà tất nhiên gọi malloc, để 63 00:03:30,290 --> 00:03:32,500 cấp phát bộ nhớ cho các dây sử dụng các loại. 64 00:03:32,500 --> 00:03:35,720 Nhưng điều này rất đơn giản. 65 00:03:35,720 --> 00:03:42,610 cho int tôi nhận được 0, i nhỏ hơn sinh viên, i + +, và bên trong cơ thể của 66 00:03:42,610 --> 00:03:48,670 này cho vòng lặp, tôi chỉ đơn giản là sẽ cung cấp miễn phí sinh viên khung i tên., 67 00:03:48,670 --> 00:03:52,300 và sinh viên miễn phí trong ngoặc tôi. nhà. 68 00:03:52,300 --> 00:03:55,620 >> Bây giờ, chúng tôi đã sử dụng rõ ràng cho ba vòng trong chương trình này, khi thực sự tôi 69 00:03:55,620 --> 00:03:58,800 có thể chỉ cần sử dụng một, nhưng điều này là chỉ vì lợi ích của cuộc biểu tình, do đó 70 00:03:58,800 --> 00:04:02,850 chúng ta có thể xác định trong ba riêng biệt các bước chính xác những gì chúng tôi đang làm. 71 00:04:02,850 --> 00:04:06,120 Chúng tôi đầu tiên nhận được một tên và một ngôi nhà cho mỗi sinh viên, chúng tôi sau đó 72 00:04:06,120 --> 00:04:08,900 in ra tên và nhà cho mỗi một trong ba học sinh, và 73 00:04:08,900 --> 00:04:11,910 sau đó chúng ta sẽ giải phóng bộ nhớ được sử dụng bởi mỗi học sinh. 74 00:04:11,910 --> 00:04:15,310 Nhưng chắc chắn chúng ta có thể đã kết hợp này vào một lớn hơn cho vòng lặp. 75 00:04:15,310 --> 00:04:18,650 >> Bây giờ chúng ta tiết kiệm, biên dịch, và chạy chương trình này. 76 00:04:18,650 --> 00:04:26,850 làm cho cấu trúc 0. / cấu trúc 0, học sinh tên, chúng ta hãy cung cấp cho David, anh ta sẽ sống 77 00:04:26,850 --> 00:04:31,580 trong Mather nhà, tên của học sinh, chúng ta hãy Lauren nói, cô ấy sẽ sống trong Leverett 78 00:04:31,580 --> 00:04:36,590 Nhà, tên của học sinh, Rob, anh sẽ thấy sống trong Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Và quả thật, David là trong Mather, Lauren là trong Leverett, 80 00:04:39,440 --> 00:04:40,810 và Rob là trong Kirkland. 81 00:04:40,810 --> 00:04:43,425