1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> DAVID J.マラン:だからそれはことが判明 文字列をコピーすることはほぼ同じではありません 3 00:00:03,130 --> 00:00:05,750 プリミティブをコピーするような単純な、 intやfloat型などがある。 4 00:00:05,750 --> 00:00:09,190 結局のところ、ボンネットの下に文字列 シーケンス文字である。 5 00:00:09,190 --> 00:00:13,130 ため、文字列をコピーするため、必要があります の全配列をコピーすることが含ま 6 00:00:13,130 --> 00:00:14,240 文字。 7 00:00:14,240 --> 00:00:17,470 >> それではそれに戻って私たちの目を向けてみましょう 最後の実装とこれをリッピング 8 00:00:17,470 --> 00:00:21,470 行、列tは、秒に等しい 明らかに十分ではなかった。 9 00:00:21,470 --> 00:00:24,440 それではその行と交換してみましょう このように、代わりに、見えます。 10 00:00:24,440 --> 00:00:34,020 文字列tは、文字列長のmalloc関数を取得します CHARのSプラス1倍の大きさ。 11 00:00:34,020 --> 00:00:36,320 >> 今行くビットが引用あります このコード行中に。 12 00:00:36,320 --> 00:00:39,330 まず、malloc関数はメモリの略 割り当て、 13 00:00:39,330 --> 00:00:40,700 この関数はまさにそれを行います。 14 00:00:40,700 --> 00:00:44,740 整数を考えると、それはあなたに戻ります のメモリチャンクのアドレス 15 00:00:44,740 --> 00:00:45,960 多くのバイト数。 16 00:00:45,960 --> 00:00:50,090 一方、文字列sの長さプラス1 我々が望むことを示すことを意味する 17 00:00:50,090 --> 00:00:54,690 Sはすでに占有するバイト数、 そのヌルターミネータを含む 18 00:00:54,690 --> 00:00:57,050 文字列の末尾にバックスラッシュ0。 19 00:00:57,050 --> 00:01:00,170 >> その間、私は必ずしも覚えていません チャーはあっても、どのように大きな 20 00:01:00,170 --> 00:01:04,340 ほとんどのシステムでは、単に1だけれども バイトなので、私はする文字のサイズを呼ぶことにします 21 00:01:04,340 --> 00:01:08,210 どのように大きな動的に把握 個々の文字です。 22 00:01:08,210 --> 00:01:12,550 一度一緒に乗じ、私が取り戻す 私は必要なバイト数の合計。 23 00:01:12,550 --> 00:01:14,680 >> しかし、malloc関数はに何を失敗した場合 我々が必要とするメモリを返す? 24 00:01:14,680 --> 00:01:16,730 次のように私は最高のものをチェックしたいと思います。 25 00:01:16,730 --> 00:01:23,330 Tがnullに等しい場合は、私が最初に行くよ 自由なsに、メモリがGETによって返さ 26 00:01:23,330 --> 00:01:27,120 文字列、その後、私はするつもりだ エラーを示すために、1を返します。 27 00:01:27,120 --> 00:01:30,360 >> もし問題がないけど、私は続行するつもりだ 4ループを使用して繰り返し処理する 28 00:01:30,360 --> 00:01:31,110 以下の通りである。 29 00:01:31,110 --> 00:01:36,000 int型のために私は0を取得し、Nに等しく Sの文字列の長さ。 30 00:01:36,000 --> 00:01:40,350 私は長い間、私はあるとして、これを行うつもりだ n以下となるよう、私 31 00:01:40,350 --> 00:01:44,460 通って反復処理を含む s内のヌル終端文字。 32 00:01:44,460 --> 00:01:47,450 >> そして、それぞれの反復で、私は今 私をインクリメントする予定。 33 00:01:47,450 --> 00:01:52,496 一方、このループの内側に、コピー Tのi番目にS年代のi番目の文字 34 00:01:52,496 --> 00:01:59,310 場所、それがTを行うには十分である ブラケット私はSブラケットIを取得します。 41 00:01:59,320 --> 00:02:02,750 >> それでは、保存、コンパイルしましょう​​、と この新しいプログラムを実行します。 42 00:02:02,750 --> 00:02:06,690 コピー1ドットスラッシュコピー1を作成します。 43 00:02:06,690 --> 00:02:09,460 そして、私は何かのように言うよ すべて小文字でこんにちは。 44 00:02:09,460 --> 00:02:12,280 そしてありがたいことに、この時間は私の 元は変更されません。 45 00:02:12,280 --> 00:02:13,660 すべて小文字でこんにちは。 46 00:02:13,660 --> 00:02:15,540 しかし、コピーは、確かに、大文字になります。 47 00:02:37,120 --> 00:02:38,963