1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> LUIDSPREKER 1: Dus ik voel me alsof ik de neiging om printf schrijven hello wereld of printf 3 00:00:04,010 --> 00:00:08,160 hello procent s heel vaak in contexten waar ik wil afdrukken van een 4 00:00:08,160 --> 00:00:11,360 snaar, soms vraagt ​​de gebruikersdeel van die string. 5 00:00:11,360 --> 00:00:14,980 Nou, zou het niet mooi zijn als we gemaakt een functie van eigen genoemd, 6 00:00:14,980 --> 00:00:19,900 zeggen, afdrukken naam, waarvan het doel in het leven is gewoon om komma drukken hello 7 00:00:19,900 --> 00:00:24,560 zo-en-zo door het aanvaarden van de zo-en-zo als argument voor die functie? 8 00:00:24,560 --> 00:00:29,220 We kunnen een functie van onze eigen verklaren net als we kunnen in Scratch als volgt. 9 00:00:29,220 --> 00:00:35,280 >> Met andere woorden, stel dat ik zou willen printf uw naam en dan vragen de gebruiker 10 00:00:35,280 --> 00:00:39,470 voor zijn of haar naam met een touwtje s gelijk GetString. 11 00:00:39,470 --> 00:00:42,060 En dan wil ik een functie aan te roepen genaamd print naam 12 00:00:42,060 --> 00:00:44,340 het passeren van een s als invoer. 13 00:00:44,340 --> 00:00:47,770 >> Nu helaas, er is geen functie riep naamdruk in C of in 14 00:00:47,770 --> 00:00:48,950 de CS50 bibliotheek. 15 00:00:48,950 --> 00:00:51,220 Maar maakt niet uit, want we kan het zelf maken. 16 00:00:51,220 --> 00:00:54,560 Om een ​​functie van onze eigen verklaren en daadwerkelijk in praktijk brengt, kunnen we gewoon maken 17 00:00:54,560 --> 00:00:59,000 wat ruimte in dit bestand en verklaren deze functie als volgt, leegte - 18 00:00:59,000 --> 00:01:01,900 betekent dat de functie niet eigenlijk gaat om iets terug, 19 00:01:01,900 --> 00:01:03,890 ook al zal hebben een neveneffect - 20 00:01:03,890 --> 00:01:08,030 afdrukken naam, en laten we dan opgeven in haakjes dat naamdruk verwacht een 21 00:01:08,030 --> 00:01:09,680 argument van het type string. 22 00:01:09,680 --> 00:01:12,180 En in het algemeen, zullen we denken van dat als een naam. 23 00:01:12,180 --> 00:01:15,140 >> En laten we openen onze brace en sluit onze brace. 24 00:01:15,140 --> 00:01:21,930 En dan printf binnen hello komma procent s nieuwe lijn komma naam. 25 00:01:21,930 --> 00:01:24,570 Met andere woorden, ook al functie is maar een regel code, het 26 00:01:24,570 --> 00:01:27,290 heeft nu een hoger niveau doel om af te drukken 27 00:01:27,290 --> 00:01:28,950 de naam van iemand met een groet. 28 00:01:28,950 --> 00:01:33,115 >> Nu binnenkant van de belangrijkste, merk dat ik ben roepnaam druk door het passeren van een s. 29 00:01:33,115 --> 00:01:35,830 En dus ik nu lijken te hebben een compleet programma. 30 00:01:35,830 --> 00:01:38,650 Het enige verschil anderen we hebben geschreven is dat niet alleen 31 00:01:38,650 --> 00:01:42,480 dit programma zijn de belangrijkste, het heeft ook een verklaring en de uitvoering van 32 00:01:42,480 --> 00:01:44,740 prent naam, een functie van mijn eigen. 33 00:01:44,740 --> 00:01:49,505 >> Laten we nu mijn programma met make compileren functie nul, en voer het uit met stip 34 00:01:49,505 --> 00:01:51,080 slash functie nul. 35 00:01:51,080 --> 00:01:53,390 Wanneer u wordt gevraagd om mijn naam Ik type in David. 36 00:01:53,390 --> 00:01:55,830 En ik ben inderdaad begroet met "Hallo, David." 37 00:01:55,830 --> 00:02:00,160 >> Nu, het blijkt dat ik heel bewust verklaarde afdruk naam boven de belangrijkste, 38 00:02:00,160 --> 00:02:03,860 daardoor C vertellen van te voren dat er Er bestaat een functie genaamd print 39 00:02:03,860 --> 00:02:06,930 naam, zodat ik kon gebruiken het later in de belangrijkste. 40 00:02:06,930 --> 00:02:11,610 Nu had ik in plaats daarvan naamdruk op de grond van mijn bestand, als ik eerlijk gezegd 41 00:02:11,610 --> 00:02:15,310 waarschijnlijk moeten doen dat de belangrijkste overblijfselen het eerste wat ik of 42 00:02:15,310 --> 00:02:18,450 een andere gebruiker ziet in mijn code, het blijkt dat mijn code is 43 00:02:18,450 --> 00:02:19,780 niet van plan om te compileren. 44 00:02:19,780 --> 00:02:23,610 >> In het bijzonder, als ik terug te gaan mijn terminalvenster en run te maken functie 45 00:02:23,610 --> 00:02:26,120 nul nu, merk dat ik schreeuwde. 46 00:02:26,120 --> 00:02:30,340 Als ik omhoog in mijn terminal venster, Ik zal deze eerste fout in rood, 47 00:02:30,340 --> 00:02:33,120 impliciete verklaring van functie afdruk naam. 48 00:02:33,120 --> 00:02:34,220 >> Nu, wat betekent dat? 49 00:02:34,220 --> 00:02:37,190 Nou, ook al heb ik geïmplementeerd afgedrukt in dit bestand, heb ik niet 50 00:02:37,190 --> 00:02:40,080 geïmplementeerd voordat ik heb gebruikte het in de belangrijkste. 51 00:02:40,080 --> 00:02:43,160 Nu kunnen we terug gaan naar het oude versie en zet naamdruk's 52 00:02:43,160 --> 00:02:44,450 implementatie boven. 53 00:02:44,450 --> 00:02:48,730 >> Maar ik kan in plaats daarvan geef C een hint dat er een functie om te komen. 54 00:02:48,730 --> 00:02:55,390 Specifiek, boven de belangrijkste ik kan verklaren afdrukken naam net zoals ik vroeger deed, maar 55 00:02:55,390 --> 00:02:59,450 het einde van de lijn met een puntkomma, waardoor beloven te implementeren, maar nog niet 56 00:02:59,450 --> 00:03:02,180 eigenlijk de uitvoering van de functie genoemd naamdruk. 57 00:03:02,180 --> 00:03:05,860 Ik kan dan hoofd boven mijn file als ik had gehoopt, en ik kan eigenlijk 58 00:03:05,860 --> 00:03:07,440 implementeren naam print aan de onderkant. 59 00:03:07,440 --> 00:03:12,860 >> Als ik nu terug naar mijn terminal venster en compileer functie nul met make, 60 00:03:12,860 --> 00:03:14,390 deze keer compileert. 61 00:03:14,390 --> 00:03:18,240 En als ik zonder het met dot slash-functie nul verstrekken van mijn naam, ik ben 62 00:03:18,240 --> 00:03:20,650 begroet als "Hallo, David." 63 00:03:20,650 --> 00:03:22,268