1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> Sprecher 1: So fühle ich mich, wie ich dazu neigen, schreiben printf hallo Welt oder printf 3 00:00:04,010 --> 00:00:08,160 hallo Prozent s ziemlich oft in Zusammenhängen , wo ich will, drucken Sie eine 4 00:00:08,160 --> 00:00:11,360 String, manchmal fragen die Benutzer Teil dieser Zeichenfolge. 5 00:00:11,360 --> 00:00:14,980 Nun, wäre es nicht schön, wenn wir erstellt eine Funktion der eigenen genannt, 6 00:00:14,980 --> 00:00:19,900 sagen, Print-Namen, deren Zweck im Leben ist einfach zu drucken hallo Komma 7 00:00:19,900 --> 00:00:24,560 so-und-so durch die Annahme der so-und-so als Argument an diese Funktion? 8 00:00:24,560 --> 00:00:29,220 Wir können eine Funktion der eigenen deklarieren So wie wir in Scratch wie folgt. 9 00:00:29,220 --> 00:00:35,280 >> Mit anderen Worten, ich nehme gerne printf Ihren Namen und dann bitten Sie den Benutzer 10 00:00:35,280 --> 00:00:39,470 für sein oder ihr Name mit der Zeichenkette s gleich GetString. 11 00:00:39,470 --> 00:00:42,060 Und dann möchte ich eine Funktion aufrufen Druck Namen genannt 12 00:00:42,060 --> 00:00:44,340 Übergabe eines s als Eingangs. 13 00:00:44,340 --> 00:00:47,770 >> Jetzt leider keine Funktion genannte Druck Namen in C oder in 14 00:00:47,770 --> 00:00:48,950 der CS50-Bibliothek. 15 00:00:48,950 --> 00:00:51,220 Aber egal, denn wir kann es selbst machen. 16 00:00:51,220 --> 00:00:54,560 Um eine Funktion der eigenen deklarieren und dann umsetzen, können wir einfach machen 17 00:00:54,560 --> 00:00:59,000 einige Zimmer in dieser Datei und erklären diese Funktion wie folgt, nichtig - 18 00:00:59,000 --> 00:01:01,900 was bedeutet, dass die Funktion nicht eigentlich los, um etwas zurück, 19 00:01:01,900 --> 00:01:03,890 obwohl es wird ein Nebeneffekt - 20 00:01:03,890 --> 00:01:08,030 drucken Namen und dann in angeben lassen Klammern, dass die Druck Namen erwartet eine 21 00:01:08,030 --> 00:01:09,680 Argument vom Typ String. 22 00:01:09,680 --> 00:01:12,180 Und überhaupt, wir denken der, dass als Name. 23 00:01:12,180 --> 00:01:15,140 >> Und seien wir öffnen unsere Klammer und schließen unsere Klammer. 24 00:01:15,140 --> 00:01:21,930 Und dann printf innerhalb hallo Komma neue Linie Komma Namen Prozent s. 25 00:01:21,930 --> 00:01:24,570 Mit anderen Worten, auch wenn dies Funktion ist nur eine Zeile Code, es 26 00:01:24,570 --> 00:01:27,290 hat jetzt etwas höher Level Zweck, um die Druck 27 00:01:27,290 --> 00:01:28,950 jemand den Namen mit einem Gruß. 28 00:01:28,950 --> 00:01:33,115 >> Jetzt innerhalb von Haupt-, bemerken, dass ich Aufruf Druck Namen, indem ein s. 29 00:01:33,115 --> 00:01:35,830 Und so scheine ich jetzt zu haben ein komplettes Programm. 30 00:01:35,830 --> 00:01:38,650 Wobei der einzige Unterschied von anderen wir geschrieben haben, ist, dass nicht nur 31 00:01:38,650 --> 00:01:42,480 dieses Programm haben Haupt, es hat auch ein Erklärung und Umsetzung von 32 00:01:42,480 --> 00:01:44,740 Druck Name, eine Funktion von meiner eigenen. 33 00:01:44,740 --> 00:01:49,505 >> Lassen Sie uns nun mein Programm mit make kompilieren Funktion Null ist, und führen Sie es mit Punkt 34 00:01:49,505 --> 00:01:51,080 Schrägstrich-Funktion Null. 35 00:01:51,080 --> 00:01:53,390 Bei meinem Namen aufgefordert Ich werde David geben. 36 00:01:53,390 --> 00:01:55,830 Und ich bin in der Tat begrüßt mit "Hallo, David." 37 00:01:55,830 --> 00:02:00,160 >> Nun, es stellt sich heraus, dass ich ganz bewusst erklärt Druck Namen über Haupt-, 38 00:02:00,160 --> 00:02:03,860 dadurch im Voraus zu sagen, dass es C existiert eine Funktion aufgerufen Druck 39 00:02:03,860 --> 00:02:06,930 zu nennen, so dass ich verwenden könnte später in Haupt. 40 00:02:06,930 --> 00:02:11,610 Nun hatte ich statt Druck Namen an der Boden meiner Datei, wie ehrlich gesagt, ich 41 00:02:11,610 --> 00:02:15,310 sollte wohl so zu tun, dass die Haupt Überreste das erste, was ich oder 42 00:02:15,310 --> 00:02:18,450 ein anderer Benutzer sieht in meinem Code, es stellt sich heraus, dass mein Code 43 00:02:18,450 --> 00:02:19,780 nicht zu kompilieren. 44 00:02:19,780 --> 00:02:23,610 >> Insbesondere dann, wenn ich wieder zu gehen, meine Terminal-Fenster laufen zu lassen und Funktion 45 00:02:23,610 --> 00:02:26,120 Null jetzt feststellen, dass ich angeschrien. 46 00:02:26,120 --> 00:02:30,340 Wenn ich nach oben in mein Terminalfenster Ich werde diesen ersten Fehler in rot sehen 47 00:02:30,340 --> 00:02:33,120 implizite Deklaration von Name Funktion drucken. 48 00:02:33,120 --> 00:02:34,220 >> Nun, was bedeutet das? 49 00:02:34,220 --> 00:02:37,190 Nun, auch wenn ich umgesetzt habe drucken Name in dieser Datei, habe ich nicht 50 00:02:37,190 --> 00:02:40,080 umgesetzt, bevor ich haben benutzte es in main. 51 00:02:40,080 --> 00:02:43,160 Jetzt konnten wir wieder auf die alte gehen Version und setzen Druck Namen 52 00:02:43,160 --> 00:02:44,450 Umsetzung bis oben. 53 00:02:44,450 --> 00:02:48,730 >> Aber ich kann stattdessen nur einen Hinweis geben, C dass es eine Funktion zu kommen. 54 00:02:48,730 --> 00:02:55,390 Genauer gesagt, oberhalb der Haupt Ich kann erklären, Drucken Name genauso wie ich früher, aber 55 00:02:55,390 --> 00:02:59,450 die Zeile mit einem Semikolon, wodurch vielversprechend zu implementieren, aber noch nicht 56 00:02:59,450 --> 00:03:02,180 tatsächlich die Umsetzung der Funktion genannte Druck Namen. 57 00:03:02,180 --> 00:03:05,860 Ich kann dann Haupt an der Spitze meiner Datei, wie ich gehofft, und ich kann wirklich 58 00:03:05,860 --> 00:03:07,440 implementieren Druck Namen an der Unterseite. 59 00:03:07,440 --> 00:03:12,860 >> Wenn ich nun zu meinem Terminal-Fenster zurück und kompilieren Funktion Null mit Make, 60 00:03:12,860 --> 00:03:14,390 dieses Mal ist es kompiliert. 61 00:03:14,390 --> 00:03:18,240 Und wenn ich es mit Punkt Schrägstrich-Funktion Null Bereitstellung mein Name, ich bin 62 00:03:18,240 --> 00:03:20,650 wie "Hallo, David.", begrüßte 63 00:03:20,650 --> 00:03:22,268