>> 扬声器1：让我们写一个程序， 提示输入名称和用户
房子的三名学生。
现在，为了存储这些名字和房子 我们可以使用，什么的，六个变量。
三个字符串的名称，和另一 三根弦的房子，
但我们已经知道，我们可以清理 该代码使用数组代替，
例如大小为3的数组 三个名字，而另一个数组
大小3的房子。
但事实证明，我们可以清理它 进一步的是，居然让那些
名称和房屋在一起，使一个 学生的姓名以及他或她的房子
以某种方式封装，所以 说话，到同一个变量。
>> 要做到这一点，不过，我们需要声明 我们自己的数据类型，我们自己的类型在C中，
将c的作者并不一定 想起多年前。
要做到这一点，我们可以使用关键字 的typedef，随着
其它关键字struct。
让我们一起来看看。
里面structs.h的，我已经 得到由开始
包括CS50库。
我接下来要输入typedef结构， 然后一个大括号。
里面的结构的，我要去 指定学生必须有一个
叫名字的字符串，而另一个 字符串被称为房子。
我打算再关闭我的花括号， 并指定名称
这个新的数据类型应为学生。
换句话说，通过这个语法有我 宣布我自己的一个新的数据类型
根本不存在刚才和 这种数据类型的内部有两个数据
字段或数据成员，一个叫名字， 一个叫房子，这两者
为string类型。
>> 现在，让我们使用这种类型的 在实际的程序。
在structs0.c，我已经得到了类似 我已经开始与一些
样板代码，而且我现在 要使用该数据
学生类型，如下所示。
我首先要声明一个 学生类型数组，我会
调用数组的学生 -
复数 -
我会指定它的大小将 三种，其中，通知，很值
不断的学生 -
在所有的首都 -
我已经声明了这里， 前面的文件中。
现在让我们遍历这三个 学生，并提示用户
他们的名字和房屋。
>> 对于int我得到0，i小于 较恒定的，我+ +。
而现在这个体内的内 环，我要打印出来的东西
像学生的名字。
我当时要去真正享受 通过指定学生的姓名
学生支架I。
换句话说，我想第i个学生 在被称为学生的阵列，但现在
我想获得在该第i个学生 名，而要做到这一点，我将使用
本。运营商，以获得在一个 该结构的特定领域内。
所以我指定学生支架I。名称 得到的GetString的返回值（）。
同时，我要打印出来 类似的东西，说学生
房子，现在我要指定 即第i个学生家场
将得到的返回值 另一个电话给GetString（）。
>> 现在，让我们做一些与这三个 学生的姓名和房屋，
一些简单的像印刷 每出一个句子。
对于int我得到0，我再次小于 学生，我+ +的printf“％s是在％s。
反斜杠N“，现在让我插上 这两个字段的值，
学生支架I。名，逗号， 学生支架I。房子，靠近
括号，分号。
>> 现在我需要做的一件事。
在这个文件的底部，我需要 释放分配的内存
在幕后GetSring（），这 当然调用malloc，为了
为字符串分配内存 用户类型。
但是，这很简单。
对于int我得到0，i小于 生，我+ +，和在体内
这个for循环，我只是要 免费提供学生支架我。名字，
和免费的学生支架I。房子。
>> 现在，我们已经清楚地使用了三个for循环 这个程序中，当我真的
可以只使用一种，但这是 只是用于演示的缘故，使
我们可以在三个不同的指定 步骤究竟我们正在做的。
我们首先得到一个名字和一所房子 每个学生，我们则
打印出的名称和房子 每三个学生，而且
那么我们要释放内存 使用的每个学生。
但可以肯定，我们可能已经结合本 成一个较大的for循环。
>> 现在，让我们保存，编译， 并运行此程序。
使结构0/0结构，学生的 名字，让我们提供大卫，他就住
在奥美楼，学生的姓名，让我们 劳伦说，她会住在莱弗里特
房子，学生的姓名，罗布，他会 住在柯克兰楼。
事实上，大卫是在奥美， 劳伦是莱弗里特，
和Rob在柯克兰。