>> 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.