2 00:00:00,000 --> 00:00:02,760 >> スピーカ1:のは、そのプログラムを書いてみましょう 名前の入力を促し、 3 00:00:02,760 --> 00:00:04,700 3人の学生の家。 4 00:00:04,700 --> 00:00:08,840 今、それらの名前や家を保存する 我々は、何を、6つの変数を使用することができます。 5 00:00:08,840 --> 00:00:12,260 3つの名前の文字列、および他の 住宅の3つの文字列、 6 00:00:12,260 --> 00:00:16,560 しかし、我々はすでに我々はクリーンアップすることができますことを知っている 代わりに、配列を使用して、そのコードが、 7 00:00:16,560 --> 00:00:20,220 例えば用サイズ3の配列 3名、および他の配列 8 00:00:20,220 --> 00:00:22,110 住宅の大きさ3。 9 00:00:22,110 --> 00:00:25,870 しかし、それは我々はこれをクリーンアップすることができ判明 さらにまた、、実際にそれらを保つ 10 00:00:25,870 --> 00:00:30,520 一緒に名前や家、その結果、 生徒の名前と彼または彼女の家 11 00:00:30,520 --> 00:00:34,940 何とかそのためには、カプセル化されている 同じ変数に、話す。 12 00:00:34,940 --> 00:00:39,095 >> これを行うには、しかし、我々は宣言する必要があります 私たち自身のデータ型、C言語で私たち自身の型、 13 00:00:39,095 --> 00:00:42,660 Cの作者は必ずしもなかったこと 年前を考える。 14 00:00:42,660 --> 00:00:45,630 これを行うために、我々は、キーワードを使用することができます typedefは、と一緒に 15 00:00:45,630 --> 00:00:47,200 他のキーワードstruct。 16 00:00:47,200 --> 00:00:48,160 それでは見てみましょう。 17 00:00:48,160 --> 00:00:50,650 structs.hの内部では、私はすでにしました によって開始され得 18 00:00:50,650 --> 00:00:52,560 CS50ライブラリを含む。 19 00:00:52,560 --> 00:00:57,640 私は次の、typedefで構造体を入力するつもりです してから中括弧。 20 00:00:57,640 --> 00:01:01,370 構造体の内部では、私はするつもりだ 学生が持っているものとするように指定 21 00:01:01,370 --> 00:01:04,960 nameという文字列、および他の 文字列は、家と呼ばれる。 22 00:01:04,960 --> 00:01:08,430 私はその後、私の中括弧を閉じるつもりだ、 と指定していることの名前 23 00:01:08,430 --> 00:01:11,420 この新しいデータ型は、学生でなければならない。 24 00:01:11,420 --> 00:01:15,550 つまり、この構文で私が持っている 私自身の新しいデータ型を宣言した 25 00:01:15,550 --> 00:01:19,910 それは一瞬前には存在しなかったし、 このデータ型の内部に二つのデータである 26 00:01:19,910 --> 00:01:24,270 フィールドまたはデータメンバ、名前と呼ばれる1、 1と呼ばれる家、どちらもの 27 00:01:24,270 --> 00:01:25,630 文字列型である。 28 00:01:25,630 --> 00:01:27,690 >> それでは、このタイプを使用してみましょう 実際のプログラムでは。 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 structs0.cでは、私は同じように得ている 私はいくつかにすでに開始 31 00:01:34,090 --> 00:01:36,999 定型的なコード、と私は今よ このデータを使用するつもり 32 00:01:36,999 --> 00:01:39,100 次のように、学生を入力します。 33 00:01:39,100 --> 00:01:42,450 私が最初に宣言するつもりだ タイプの学生の配列、私はよ 34 00:01:42,450 --> 00:01:43,920 配列の学生を呼ぶ - 35 00:01:43,920 --> 00:01:44,630 複数 - 36 00:01:44,630 --> 00:01:49,360 そして私は、そのサイズがあることを指定します の値であり、予告、3、 37 00:01:49,360 --> 00:01:50,880 一定の学生が - 38 00:01:50,880 --> 00:01:51,890 すべて大文字で - 39 00:01:51,890 --> 00:01:54,930 私はここに宣言されたので、 以前のファイルに。 40 00:01:54,930 --> 00:01:58,280 それでは、これらの3を反復しましょう 学生、の入力をユーザーに求める 41 00:01:58,280 --> 00:02:00,050 自分の名前や家。 42 00:02:00,050 --> 00:02:05,422 >> 私は0を得るint型のために、私は小さい その定数より、私は+ +。 43 00:02:05,422 --> 00:02:08,600 そして今は、この本体の内部 ループ、私は何かをプリントアウトするつもりだ 44 00:02:08,600 --> 00:02:11,470 学生の名前を挙げることができる。 45 00:02:11,470 --> 00:02:14,890 私は、実際にそれを取得するつもりだ 指定することで、学生の名前 46 00:02:14,890 --> 00:02:17,290 学生が私を囲む。 47 00:02:17,290 --> 00:02:21,550 つまり、私は、i番目の学生が欲しい 配列になりました生徒を呼び出しましたが、 48 00:02:21,550 --> 00:02:25,340 私は、i番目のスチューデントで取得したい 名前を付けて、これを行うには、私が使用するつもり 49 00:02:25,340 --> 00:02:30,160 。オペレータ、で取得するために、 構造体の内部に特定のフィールド。 50 00:02:30,160 --> 00:02:37,100 だから私は、私が学生のブラケットを指定します。名前を GetStringメソッドの戻り値を取得します()。 51 00:02:37,100 --> 00:02:40,310 その間、私はプリントアウトするつもりだ スチューデント言って似たような、 52 00:02:40,310 --> 00:02:45,410 ハウス、今私が指定するつもりだ そのi番目の生徒の家のフィールド 53 00:02:45,410 --> 00:02:49,480 の戻り値を取得しなければならない GetStringメソッドの別の呼び出し()。 54 00:02:49,480 --> 00:02:52,350 >> それでは、これら3で何かをやらせる 生徒の名前や家、 55 00:02:52,350 --> 00:02:56,230 印刷のような単純なもの センテンス内の各点。 56 00:02:56,230 --> 00:03:07,580 私は0を得るINTため、再び私はより少ない 学生は、私+ +のprintf "%sは%sである。 57 00:03:07,580 --> 00:03:12,600 バックスラッシュN」、そして今私はプラグインしましょう これらの二つのフィールドの値は、 58 00:03:12,600 --> 00:03:19,055 学生は、私。名前、コンマを一括 学生が私を囲む。家、近い 59 00:03:19,055 --> 00:03:21,290 括弧、セミコロン。 60 00:03:21,290 --> 00:03:23,020 >> そして今、私はもう一つのことを行う必要があります。 61 00:03:23,020 --> 00:03:26,600 このファイルの最後に、私がする必要が 割り当てられたメモリを解放 62 00:03:26,600 --> 00:03:30,290 GetSring()によって舞台裏いる もちろんするためには、malloc関数を呼び出し、 63 00:03:30,290 --> 00:03:32,500 文字列にメモリを割り当てる ユーザーの種類。 64 00:03:32,500 --> 00:03:35,720 これには簡単です。 65 00:03:35,720 --> 00:03:42,610 私は0を得るint型のために、私はより少ない 、私+ +、および体内の生徒 66 00:03:42,610 --> 00:03:48,670 このループのために、私は単純にするつもりだ 私は自由、学生のブラケットを提供します。名前を、 67 00:03:48,670 --> 00:03:52,300 無料の学生が私を囲む。家。 68 00:03:52,300 --> 00:03:55,620 >> 今、我々は明らかにループの3を使用しました このプログラムでは、とき本当に私 69 00:03:55,620 --> 00:03:58,800 ひとつを用いるが、これはあるかもしれない ただ、デモの為に、その結​​果、 70 00:03:58,800 --> 00:04:02,850 我々は3つの異なる中で指定することができます 我々がやっていることを正確にどのような手順。 71 00:04:02,850 --> 00:04:06,120 我々は最初の名前と家を取得している 学生の各々について、我々はその後だ 72 00:04:06,120 --> 00:04:08,900 の名前と家をプリントアウト 3学生のそれぞれ、および 73 00:04:08,900 --> 00:04:11,910 その後、我々はメモリを解放するつもりだ 学生の各々によって使用される。 74 00:04:11,910 --> 00:04:15,310 しかし確実に我々はこれを組み合わせていたかもしれない ループの大きな一つに。 75 00:04:15,310 --> 00:04:18,650 >> コンパイル、今度は保存でき、 このプログラムを実行してください。 76 00:04:18,650 --> 00:04:26,850 構造体0を作る。/構造体0、スチューデント 名前、のはデビッドを提供しましょう​​、と彼は生きるよ 77 00:04:26,850 --> 00:04:31,580 メイザーハウス、学生の名前で、みましょう ローレンと言うと、彼女はレベレットに住んでます 78 00:04:31,580 --> 00:04:36,590 ハウス、学生の名前、ロブ、彼はよ カークランド家に住んでいる。 79 00:04:36,590 --> 00:04:39,440 そして実際、ダビデはマザーにあり、 ローレンレベレットにあり、 80 00:04:39,440 --> 00:04:40,810 とロブはカークランドにあります。 81 00:04:40,810 --> 00:04:43,425