2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 1: Mari kita menulis program yang menggesa pengguna untuk nama-nama dan 3 00:00:02,760 --> 00:00:04,700 rumah daripada tiga pelajar. 4 00:00:04,700 --> 00:00:08,840 Sekarang, untuk menyimpan nama-nama dan rumah-rumah kita boleh menggunakan, apa, enam pembolehubah. 5 00:00:08,840 --> 00:00:12,260 Tiga tali untuk nama-nama, dan satu lagi tiga tali untuk rumah-rumah, 6 00:00:12,260 --> 00:00:16,560 tetapi kita sudah tahu bahawa kita boleh membersihkan kod yang dengan menggunakan tatasusunan sebaliknya, 7 00:00:16,560 --> 00:00:20,220 misalnya pelbagai saiz 3 untuk tiga nama, dan satu lagi pelbagai 8 00:00:20,220 --> 00:00:22,110 saiz 3 untuk rumah-rumah. 9 00:00:22,110 --> 00:00:25,870 Tetapi ternyata kita boleh membersihkan ini sehingga lagi lagi, dan benar-benar menyimpan 10 00:00:25,870 --> 00:00:30,520 nama dan rumah-rumah bersama-sama, supaya nama pelajar dan rumah beliau 11 00:00:30,520 --> 00:00:34,940 entah bagaimana terkandung, jadi untuk bercakap, ke dalam pembolehubah yang sama. 12 00:00:34,940 --> 00:00:39,095 >> Untuk melakukan ini, walaupun, kita perlu mengisytiharkan jenis data kita sendiri, jenis kita sendiri dalam C, 13 00:00:39,095 --> 00:00:42,660 bahawa pengarang C tidak semestinya memikirkan tahun lalu. 14 00:00:42,660 --> 00:00:45,630 Untuk melakukan ini kita boleh menggunakan kata kunci typedef, bersama-sama dengan 15 00:00:45,630 --> 00:00:47,200 struct kata kunci yang lain. 16 00:00:47,200 --> 00:00:48,160 Mari kita melihat. 17 00:00:48,160 --> 00:00:50,650 Di dalam structs.h, saya telah pun mendapat dimulakan oleh 18 00:00:50,650 --> 00:00:52,560 termasuk perpustakaan CS50 itu. 19 00:00:52,560 --> 00:00:57,640 Saya seterusnya akan menaip struct typedef, dan kemudian bersedia kerinting. 20 00:00:57,640 --> 00:01:01,370 Di dalam struct itu, saya akan menentukan bahawa pelajar hendaklah mempunyai 21 00:01:01,370 --> 00:01:04,960 rentetan dipanggil nama, dan satu lagi rentetan dipanggil rumah. 22 00:01:04,960 --> 00:01:08,430 Saya akan kemudian tutup pendakap kerinting saya, dan menentukan bahawa nama 23 00:01:08,430 --> 00:01:11,420 Jenis data baru ini adalah pelajar. 24 00:01:11,420 --> 00:01:15,550 Dalam erti kata lain, melalui sintaks ini aku mengisytiharkan jenis data baru daripada saya sendiri 25 00:01:15,550 --> 00:01:19,910 yang tidak wujud seketika dahulu, dan dalam jenis data ini adalah dua data 26 00:01:19,910 --> 00:01:24,270 bidang atau ahli data, satu dipanggil nama, satu rumah dipanggil, kedua-duanya 27 00:01:24,270 --> 00:01:25,630 adalah jenis tali. 28 00:01:25,630 --> 00:01:27,690 >> Mari kita sekarang menggunakan jenis dalam program sebenar. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 Dalam structs0.c, saya juga mendapat sendiri mula sudah dengan beberapa 31 00:01:34,090 --> 00:01:36,999 kod boilerplate, dan saya kini akan menggunakan data ini 32 00:01:36,999 --> 00:01:39,100 menaip pelajar, seperti berikut. 33 00:01:39,100 --> 00:01:42,450 Saya pertama akan mengisytiharkan pelbagai jenis pelajar, saya akan 34 00:01:42,450 --> 00:01:43,920 memanggil pelajar pelbagai - 35 00:01:43,920 --> 00:01:44,630 majmuk - 36 00:01:44,630 --> 00:01:49,360 dan saya akan menentukan bahawa saiznya akan menjadi tiga, yang, notis, ialah nilai 37 00:01:49,360 --> 00:01:50,880 yang berterusan PELAJAR - 38 00:01:50,880 --> 00:01:51,890 dalam semua ibu - 39 00:01:51,890 --> 00:01:54,930 bahawa saya telah diisytiharkan di sini, sebelum ini dalam fail. 40 00:01:54,930 --> 00:01:58,280 Mari kita sekarang melelar ke atas tiga pelajar, dan meminta pengguna untuk 41 00:01:58,280 --> 00:02:00,050 nama dan rumah-rumah mereka. 42 00:02:00,050 --> 00:02:05,422 >> untuk int i mendapatkan 0, i adalah kurang daripada itu berterusan, i + +. 43 00:02:05,422 --> 00:02:08,600 Dan kini dalam jasad ini untuk gelung, saya akan mencetak sesuatu 44 00:02:08,600 --> 00:02:11,470 seperti nama pelajar. 45 00:02:11,470 --> 00:02:14,890 Saya kemudian pergi untuk benar-benar mendapat bahawa nama pelajar dengan menentukan 46 00:02:14,890 --> 00:02:17,290 pelajar braket i. 47 00:02:17,290 --> 00:02:21,550 Dalam erti kata lain saya ingin i-ke-pelajar dalam barisan yang dipanggil pelajar, tetapi kini 48 00:02:21,550 --> 00:02:25,340 Saya ingin mendapatkan pada itu i-ke-pelajar menamakan, dan untuk melakukan ini, saya akan menggunakan 49 00:02:25,340 --> 00:02:30,160 yang. pengendali, untuk mendapatkan pada di dalam bidang tertentu struct itu. 50 00:02:30,160 --> 00:02:37,100 Jadi saya nyatakan pelajar braket i. Nama mendapat nilai pulangan GetString (). 51 00:02:37,100 --> 00:02:40,310 Sementara itu, saya akan mencetak sesuatu yang serupa dengan berkata pelajar 52 00:02:40,310 --> 00:02:45,410 rumah, dan kini saya akan nyatakan bahawa i-ke-bidang rumah pelajar 53 00:02:45,410 --> 00:02:49,480 hendaklah mengumpulkan nilai pulangan satu lagi panggilan untuk GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Sekarang mari kita buat sesuatu dengan ketiga-tiga nama dan rumah pelajar, 55 00:02:52,350 --> 00:02:56,230 sesuatu yang mudah seperti mencetak setiap dalam ayat. 56 00:02:56,230 --> 00:03:07,580 untuk int i mendapatkan 0, sekali lagi i adalah kurang daripada pelajar, i + +, printf "% s di% s. 57 00:03:07,580 --> 00:03:12,600 garis sendeng terbalik n ", dan sekarang mari saya pasangkan nilai-nilai kedua-dua bidang, 58 00:03:12,600 --> 00:03:19,055 pelajar braket i. nama, koma, pelajar braket i. rumah, berhampiran 59 00:03:19,055 --> 00:03:21,290 paren, koma bertitik. 60 00:03:21,290 --> 00:03:23,020 >> Dan sekarang saya perlu melakukan satu lagi perkara. 61 00:03:23,020 --> 00:03:26,600 Di bahagian bawah fail ini, saya perlu membebaskan memori yang telah diperuntukkan 62 00:03:26,600 --> 00:03:30,290 di belakang tabir oleh GetSring (), yang sudah tentu panggilan malloc, untuk 63 00:03:30,290 --> 00:03:32,500 memperuntukkan memori untuk tali jenis pengguna. 64 00:03:32,500 --> 00:03:35,720 Tetapi untuk ini adalah mudah. 65 00:03:35,720 --> 00:03:42,610 untuk int i mendapatkan 0, i adalah kurang daripada pelajar, i + +, dan di dalam badan 66 00:03:42,610 --> 00:03:48,670 ini untuk gelung, saya hanya akan menyediakan pelajar percuma kurungan i. nama, 67 00:03:48,670 --> 00:03:52,300 dan pelajar bebas braket i. rumah. 68 00:03:52,300 --> 00:03:55,620 >> Sekarang, kita telah jelas menggunakan tiga untuk gelung dalam program ini, apabila benar-benar saya 69 00:03:55,620 --> 00:03:58,800 boleh hanya menggunakan satu, tetapi ini adalah hanya untuk demi demonstrasi, supaya 70 00:03:58,800 --> 00:04:02,850 kita boleh menentukan dalam tiga berbeza langkah apa sebenarnya yang kami lakukan. 71 00:04:02,850 --> 00:04:06,120 Kami pertama mendapatkan nama dan rumah bagi setiap pelajar, kami kemudian 72 00:04:06,120 --> 00:04:08,900 mencetak nama dan rumah untuk setiap satu daripada tiga pelajar, dan 73 00:04:08,900 --> 00:04:11,910 maka kita akan membebaskan memori digunakan oleh setiap pelajar. 74 00:04:11,910 --> 00:04:15,310 -Lahan kita boleh telah menggabungkan ini ke dalam satu yang lebih besar untuk gelung. 75 00:04:15,310 --> 00:04:18,650 >> Sekarang mari kita menyimpan, menyusun, dan menjalankan program ini. 76 00:04:18,650 --> 00:04:26,850 membuat structs 0. / structs 0, pelajar menamakan, mari kita memberikan David, dia akan hidup 77 00:04:26,850 --> 00:04:31,580 dalam Mather House, nama pelajar, mari kita mengatakan Lauren, dia akan hidup di Leverett 78 00:04:31,580 --> 00:04:36,590 Rumah, nama pelajar, Rob, dia akan tinggal di Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Dan sesungguhnya, David adalah dalam Mather, Lauren adalah dalam Leverett, 80 00:04:39,440 --> 00:04:40,810 dan Rob adalah di Kirkland. 81 00:04:40,810 --> 00:04:43,425