SPEAKER 1: Hãy viết một chương trình nhắc nhở người dùng cho tên và nhà của ba sinh viên. 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. Ba dây cho các tên, và một ba dây cho nhà ở, 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 đó, Ví dụ một mảng có kích thước 3 cho ba tên, và một loạt các kích thước 3 cho ngôi nhà. 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 tên và nhà với nhau, do đó, một tên học sinh và nhà của mình bằng cách nào đó đóng gói, do đó, để nói, vào cùng một biến. Để 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, mà các tác giả của C không nhất thiết phải nghĩ của năm trước. Để làm điều này chúng ta có thể sử dụng từ khóa typedef, cùng với các cấu trúc từ khóa khác. Chúng ta hãy có một cái nhìn. Bên trong structs.h, tôi đã đã nhận được bắt đầu bởi bao gồm các thư viện CS50. Tôi tiếp theo sẽ gõ cấu trúc typedef, và sau đó là một cú đúp xoăn. Bên trong các cấu trúc, tôi sẽ xác định rằng học sinh sẽ có một chuỗi gọi tên, và một chuỗi được gọi là nhà. 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 kiểu dữ liệu mới này sẽ là sinh viên. 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 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 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 là kiểu string. Bây giờ hãy sử dụng loại trong một chương trình thực tế. 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ố đã đang soạn, và tôi bây giờ sẽ sử dụng dữ liệu này loại sinh viên, như sau. Tôi đầu tiên sẽ khai báo một mảng kiểu sinh viên, tôi sẽ gọi các sinh viên mảng - số nhiều - 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 các HỌC SINH liên tục - trong tất cả các thủ đô - mà tôi đã tuyên bố lên đây, trước đó trong tập tin. Bây giờ chúng ta lặp qua ba học sinh, và nhắc nhở người dùng tên và ngôi nhà của họ. cho int tôi nhận được 0, i nhỏ hơn liên tục, i + +. 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ì đó như tên của học sinh. Tôi sau đó sẽ thực sự nhận được rằng tên học sinh bằng cách xác định sinh viên trong ngoặc tôi. 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ờ 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 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. 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 (). Trong khi đó, tôi sẽ in ra một cái gì đó tương tự, nói rằng học sinh nhà, và bây giờ tôi sẽ chỉ định rằng trường nhà sinh viên thứ i sẽ có giá trị trả lại một cuộc gọi đến GetString (). 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, một cái gì đó đơn giản như in ấn mỗi ra trong một câu. 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. 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, sinh viên trong ngoặc i tên., dấu phẩy, sinh viên trong ngoặc tôi. nhà, gần Dấu ngoặc đơn, dấu chấm phẩy. Và bây giờ tôi cần phải làm một điều nữa. Ở 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ổ đằng sau hậu trường của GetSring (), mà tất nhiên gọi malloc, để cấp phát bộ nhớ cho các dây sử dụng các loại. Nhưng điều này rất đơn giản. cho int tôi nhận được 0, i nhỏ hơn sinh viên, i + +, và bên trong cơ thể của 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., và sinh viên miễn phí trong ngoặc tôi. nhà. 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 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 đó 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. 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 đó in ra tên và nhà cho mỗi một trong ba học sinh, và sau đó chúng ta sẽ giải phóng bộ nhớ được sử dụng bởi mỗi học sinh. 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. Bây giờ chúng ta tiết kiệm, biên dịch, và chạy chương trình này. 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 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 Nhà, tên của học sinh, Rob, anh sẽ thấy sống trong Kirkland House. Và quả thật, David là trong Mather, Lauren là trong Leverett, và Rob là trong Kirkland.