SPEAKER 1: Mari kita menulis program yang menggesa pengguna untuk nama-nama dan rumah daripada tiga pelajar. Sekarang, untuk menyimpan nama-nama dan rumah-rumah kita boleh menggunakan, apa, enam pembolehubah. Tiga tali untuk nama-nama, dan satu lagi tiga tali untuk rumah-rumah, tetapi kita sudah tahu bahawa kita boleh membersihkan kod yang dengan menggunakan tatasusunan sebaliknya, misalnya pelbagai saiz 3 untuk tiga nama, dan satu lagi pelbagai saiz 3 untuk rumah-rumah. Tetapi ternyata kita boleh membersihkan ini sehingga lagi lagi, dan benar-benar menyimpan nama dan rumah-rumah bersama-sama, supaya nama pelajar dan rumah beliau entah bagaimana terkandung, jadi untuk bercakap, ke dalam pembolehubah yang sama. Untuk melakukan ini, walaupun, kita perlu mengisytiharkan jenis data kita sendiri, jenis kita sendiri dalam C, bahawa pengarang C tidak semestinya memikirkan tahun lalu. Untuk melakukan ini kita boleh menggunakan kata kunci typedef, bersama-sama dengan struct kata kunci yang lain. Mari kita melihat. Di dalam structs.h, saya telah pun mendapat dimulakan oleh termasuk perpustakaan CS50 itu. Saya seterusnya akan menaip struct typedef, dan kemudian bersedia kerinting. Di dalam struct itu, saya akan menentukan bahawa pelajar hendaklah mempunyai rentetan dipanggil nama, dan satu lagi rentetan dipanggil rumah. Saya akan kemudian tutup pendakap kerinting saya, dan menentukan bahawa nama Jenis data baru ini adalah pelajar. Dalam erti kata lain, melalui sintaks ini aku mengisytiharkan jenis data baru daripada saya sendiri yang tidak wujud seketika dahulu, dan dalam jenis data ini adalah dua data bidang atau ahli data, satu dipanggil nama, satu rumah dipanggil, kedua-duanya adalah jenis tali. Mari kita sekarang menggunakan jenis dalam program sebenar. Dalam structs0.c, saya juga mendapat sendiri mula sudah dengan beberapa kod boilerplate, dan saya kini akan menggunakan data ini menaip pelajar, seperti berikut. Saya pertama akan mengisytiharkan pelbagai jenis pelajar, saya akan memanggil pelajar pelbagai - majmuk - dan saya akan menentukan bahawa saiznya akan menjadi tiga, yang, notis, ialah nilai yang berterusan PELAJAR - dalam semua ibu - bahawa saya telah diisytiharkan di sini, sebelum ini dalam fail. Mari kita sekarang melelar ke atas tiga pelajar, dan meminta pengguna untuk nama dan rumah-rumah mereka. untuk int i mendapatkan 0, i adalah kurang daripada itu berterusan, i + +. Dan kini dalam jasad ini untuk gelung, saya akan mencetak sesuatu seperti nama pelajar. Saya kemudian pergi untuk benar-benar mendapat bahawa nama pelajar dengan menentukan pelajar braket i. Dalam erti kata lain saya ingin i-ke-pelajar dalam barisan yang dipanggil pelajar, tetapi kini Saya ingin mendapatkan pada itu i-ke-pelajar menamakan, dan untuk melakukan ini, saya akan menggunakan yang. pengendali, untuk mendapatkan pada di dalam bidang tertentu struct itu. Jadi saya nyatakan pelajar braket i. Nama mendapat nilai pulangan GetString (). Sementara itu, saya akan mencetak sesuatu yang serupa dengan berkata pelajar rumah, dan kini saya akan nyatakan bahawa i-ke-bidang rumah pelajar hendaklah mengumpulkan nilai pulangan satu lagi panggilan untuk GetString (). Sekarang mari kita buat sesuatu dengan ketiga-tiga nama dan rumah pelajar, sesuatu yang mudah seperti mencetak setiap dalam ayat. untuk int i mendapatkan 0, sekali lagi i adalah kurang daripada pelajar, i + +, printf "% s di% s. garis sendeng terbalik n ", dan sekarang mari saya pasangkan nilai-nilai kedua-dua bidang, pelajar braket i. nama, koma, pelajar braket i. rumah, berhampiran paren, koma bertitik. Dan sekarang saya perlu melakukan satu lagi perkara. Di bahagian bawah fail ini, saya perlu membebaskan memori yang telah diperuntukkan di belakang tabir oleh GetSring (), yang sudah tentu panggilan malloc, untuk memperuntukkan memori untuk tali jenis pengguna. Tetapi untuk ini adalah mudah. untuk int i mendapatkan 0, i adalah kurang daripada pelajar, i + +, dan di dalam badan ini untuk gelung, saya hanya akan menyediakan pelajar percuma kurungan i. nama, dan pelajar bebas braket i. rumah. Sekarang, kita telah jelas menggunakan tiga untuk gelung dalam program ini, apabila benar-benar saya boleh hanya menggunakan satu, tetapi ini adalah hanya untuk demi demonstrasi, supaya kita boleh menentukan dalam tiga berbeza langkah apa sebenarnya yang kami lakukan. Kami pertama mendapatkan nama dan rumah bagi setiap pelajar, kami kemudian mencetak nama dan rumah untuk setiap satu daripada tiga pelajar, dan maka kita akan membebaskan memori digunakan oleh setiap pelajar. -Lahan kita boleh telah menggabungkan ini ke dalam satu yang lebih besar untuk gelung. Sekarang mari kita menyimpan, menyusun, dan menjalankan program ini. membuat structs 0. / structs 0, pelajar menamakan, mari kita memberikan David, dia akan hidup dalam Mather House, nama pelajar, mari kita mengatakan Lauren, dia akan hidup di Leverett Rumah, nama pelajar, Rob, dia akan tinggal di Kirkland House. Dan sesungguhnya, David adalah dalam Mather, Lauren adalah dalam Leverett, dan Rob adalah di Kirkland.