1 00:00:00,000 --> 00:00:00,620 2 00:00:00,620 --> 00:00:03,140 >> DAVID J. MALAN: Lassen Sie uns ein Programm schreiben daß fragt den Benutzer nach einer Zeichenfolge und 3 00:00:03,140 --> 00:00:07,210 fahren Sie dann diese Zeichenfolge zu drucken Zeichen für Zeichen pro Zeile. 4 00:00:07,210 --> 00:00:10,570 Jetzt in der Vergangenheit, würden wir getan haben wahrscheinlich mit eckigen Klammer-Notation, 5 00:00:10,570 --> 00:00:13,680 effektive Behandlung einen String ein Array von Zeichen. 6 00:00:13,680 --> 00:00:17,200 >> Aber dieses Mal, lassen Sie uns stattdessen behandeln ein String, was es wirklich heißt, ein 7 00:00:17,200 --> 00:00:18,770 Zeiger oder eine Adresse. 8 00:00:18,770 --> 00:00:22,420 Genauer gesagt, die Adresse einer Charakter, wirklich die Adresse des 9 00:00:22,420 --> 00:00:25,740 erste Zeichen in einer Sequenz von Zeichen, die wir gemeinsam kennen 10 00:00:25,740 --> 00:00:26,860 als String. 11 00:00:26,860 --> 00:00:30,740 >> Lassen Sie uns zunächst einen String erklären für was es wirklich ist, char *. 12 00:00:30,740 --> 00:00:31,770 Und wir nennen es ist. 13 00:00:31,770 --> 00:00:34,670 Und dann weisen Sie die Rückkehr Wert von get-String. 14 00:00:34,670 --> 00:00:36,380 >> Lassen Sie uns als nächstes tun einige Fehlerprüfung. 15 00:00:36,380 --> 00:00:42,920 Wenn s ist null, lassen Sie sofort zurück so, dass wir nicht versehentlich 16 00:00:42,920 --> 00:00:45,630 dereferenzieren, die NULL-Zeiger. 17 00:00:45,630 --> 00:00:49,750 >> Als nächstes wollen wir über die laufen Zeichen s wie folgt. 18 00:00:49,750 --> 00:00:52,390 Für int bekommt i 0. 19 00:00:52,390 --> 00:00:55,890 n gleich der String-Länge von s. 20 00:00:55,890 --> 00:00:58,050 Tun Sie dies so lange, wie ich weniger als n ist. 21 00:00:58,050 --> 00:01:00,690 Und bei jeder Iteration, erhöhe ich. 22 00:01:00,690 --> 00:01:02,710 >> Und was wollen wir tun bei jeder Iteration? 23 00:01:02,710 --> 00:01:06,180 Lassen Sie uns jetzt ausdrucken bei jeder Iteration ein einzelnes Zeichen 24 00:01:06,180 --> 00:01:07,910 gefolgt von einer neuen Zeile. 25 00:01:07,910 --> 00:01:10,010 Nun, was Charakter zu tun wir wollen zu drucken? 26 00:01:10,010 --> 00:01:16,850 Ich schlage vor, wir gehen an die Adresse dass gleich der Summe der s plus i. 27 00:01:16,850 --> 00:01:18,390 >> Nun, warum dieser Ausdruck? 28 00:01:18,390 --> 00:01:22,130 Nun, daran erinnern, dass in s gespeichert ist Adresse des ersten Zeichens 29 00:01:22,130 --> 00:01:23,490 in unserem String, s. 30 00:01:23,490 --> 00:01:27,470 Währenddessen wird auf i erhöht jede Iteration, so daß er bei 0 beginnt, 31 00:01:27,470 --> 00:01:29,590 dann geht auf 1, geht dann zu 2. 32 00:01:29,590 --> 00:01:33,870 >> Also mit anderen Worten, s plus i effektiv repräsentiert die Adresse 33 00:01:33,870 --> 00:01:35,990 das i-te Zeichen in s. 34 00:01:35,990 --> 00:01:40,830 Also, wenn wir gehen an diese Adresse durch der *-Operator, werden wir die los werden 35 00:01:40,830 --> 00:01:42,650 i-te Zeichen in der Zeichenfolge. 36 00:01:42,650 --> 00:01:45,700 Und das ist der Wert, den sein wird für unsere Platzhalter ersetzt, 37 00:01:45,700 --> 00:01:46,840 C. Prozent 38 00:01:46,840 --> 00:01:47,840 >> Lassen Sie uns bestätigen, wie viel. 39 00:01:47,840 --> 00:01:51,720 Retten wir, kompilieren und führen Sie dieses Programm. 40 00:01:51,720 --> 00:01:55,990 Machen Zeiger, Punkt Strich Zeiger. 41 00:01:55,990 --> 00:01:58,780 Und jetzt werde ich es geben, ein String wie hallo. 42 00:01:58,780 --> 00:01:59,600 Sie Enter. 43 00:01:59,600 --> 00:02:03,770 >> Und in der Tat, ich sehe, H-E-L-L-O, mit jeder char auf seine eigene Linie. 44 00:02:03,770 --> 00:02:05,410