1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> HÖGTALARE 1: Så jag känner att jag har en tendens att skriver printf hallå världen eller printf 3 00:00:04,010 --> 00:00:08,160 hej procent är ganska ofta i sammanhang där jag vill skriva ut en 4 00:00:08,160 --> 00:00:11,360 sträng, ibland be användardelen av den strängen. 5 00:00:11,360 --> 00:00:14,980 Tja, skulle det inte vara trevligt om vi skapade en funktion av vår egen som heter, 6 00:00:14,980 --> 00:00:19,900 säga, skriv ut namn, vars syfte i livet är helt enkelt att skriva ut hej kommatecken 7 00:00:19,900 --> 00:00:24,560 så-och-så genom att acceptera den så-och-så som ett argument till funktionen? 8 00:00:24,560 --> 00:00:29,220 Vi kan deklarera en funktion av vår egen precis som vi kan i Scratch enligt följande. 9 00:00:29,220 --> 00:00:35,280 >> Med andra ord, antar att jag skulle vilja printf ditt namn och sedan be användaren 10 00:00:35,280 --> 00:00:39,470 för hans eller hennes namn med snöre n är lika med GetString. 11 00:00:39,470 --> 00:00:42,060 Och då vill jag ringa en funktion kallas utskriftsnamn 12 00:00:42,060 --> 00:00:44,340 passerar ett s som dess ingång. 13 00:00:44,340 --> 00:00:47,770 >> Nu tyvärr, det finns ingen funktion kallas utskriftsnamn i C eller i 14 00:00:47,770 --> 00:00:48,950 den CS50 biblioteket. 15 00:00:48,950 --> 00:00:51,220 Men oavsett, eftersom vi kan göra det själva. 16 00:00:51,220 --> 00:00:54,560 För att deklarera en funktion av vår egen och sedan genomföra det, kan vi helt enkelt göra 17 00:00:54,560 --> 00:00:59,000 visst utrymme i denna fil och förklara funktionen enligt följande, tomrum - 18 00:00:59,000 --> 00:01:01,900 som innebär att funktionen inte är faktiskt kommer att gå tillbaka något, 19 00:01:01,900 --> 00:01:03,890 även om det kommer att ha en bieffekt - 20 00:01:03,890 --> 00:01:08,030 skriva ut namn, och sedan ska vi anger i parenteser att skriva ut namn förväntar sig en 21 00:01:08,030 --> 00:01:09,680 argument av typen sträng. 22 00:01:09,680 --> 00:01:12,180 Och i allmänhet, vi tror av det som ett namn. 23 00:01:12,180 --> 00:01:15,140 >> Och låt oss öppna våra stag och stänga våra stag. 24 00:01:15,140 --> 00:01:21,930 Och sedan printf inne hej kommatecken procent nya linje kommatecken namn. 25 00:01:21,930 --> 00:01:24,570 Med andra ord, även om detta Funktionen finns bara en rad kod, det 26 00:01:24,570 --> 00:01:27,290 gör nu har lite högre nivå syfte att skriva ut 27 00:01:27,290 --> 00:01:28,950 någons namn med en hälsning. 28 00:01:28,950 --> 00:01:33,115 >> Nu inne i huvud, märker att jag är ringer print namn genom att en s. 29 00:01:33,115 --> 00:01:35,830 Och så jag verkar nu ha ett komplett program. 30 00:01:35,830 --> 00:01:38,650 Den enda skillnaden från andra Vi har skrivit är att det inte bara gör 31 00:01:38,650 --> 00:01:42,480 detta program har stora, den har också en deklaration och genomförande av 32 00:01:42,480 --> 00:01:44,740 utskriftsnamn, en funktion av mina egna. 33 00:01:44,740 --> 00:01:49,505 >> Låt oss nu kompilera mitt program med smink funktion noll, och kör den med prick 34 00:01:49,505 --> 00:01:51,080 slash funktion noll. 35 00:01:51,080 --> 00:01:53,390 När du uppmanas att mitt namn Jag ska skriva in David. 36 00:01:53,390 --> 00:01:55,830 Och jag verkligen är hälsade med "Hej, David." 37 00:01:55,830 --> 00:02:00,160 >> Nu visar det sig jag mycket medvetet förklarade utskriftsnamnet ovan huvud, 38 00:02:00,160 --> 00:02:03,860 därigenom berättar C i förväg att det finns en funktion som kallas print 39 00:02:03,860 --> 00:02:06,930 namn så att jag kunde använda det senare i main. 40 00:02:06,930 --> 00:02:11,610 Nu hade jag istället lagt utskriftsnamnet på ner i min fil, som ärligt talat jag 41 00:02:11,610 --> 00:02:15,310 förmodligen bör göra så att huvudlämningar det första som jag eller 42 00:02:15,310 --> 00:02:18,450 annan användare ser i min kod, det visar sig att min kod är 43 00:02:18,450 --> 00:02:19,780 inte går att kompilera. 44 00:02:19,780 --> 00:02:23,610 >> Speciellt om jag går tillbaka till min terminalfönster och kör gör funktion 45 00:02:23,610 --> 00:02:26,120 noll nu, märker att jag skrek åt. 46 00:02:26,120 --> 00:02:30,340 Om jag rulla upp i mitt terminalfönster, Jag ser detta första fel i rött, 47 00:02:30,340 --> 00:02:33,120 implicit deklaration av funktionsutskriftsnamn. 48 00:02:33,120 --> 00:02:34,220 >> Nu, vad betyder det? 49 00:02:34,220 --> 00:02:37,190 Tja, även om jag har genomfört skriva ut namn på filen, jag har inte 50 00:02:37,190 --> 00:02:40,080 genomfört det innan jag har använde den i huvud. 51 00:02:40,080 --> 00:02:43,160 Nu, vi skulle kunna gå tillbaka till det gamla version och sätta tryck namns 52 00:02:43,160 --> 00:02:44,450 genomförande upp överst. 53 00:02:44,450 --> 00:02:48,730 >> Men jag kan i stället bara ge C en ledtråd att det finns en funktion för att komma. 54 00:02:48,730 --> 00:02:55,390 Specifikt ovanför huvud jag kan förklara skriva ut namn precis som jag gjorde tidigare, men 55 00:02:55,390 --> 00:02:59,450 avsluta raden med ett semikolon, och därigenom lovar att genomföra, men ändå inte 56 00:02:59,450 --> 00:03:02,180 faktiskt genomförande av funktionen kallas utskriftsnamn. 57 00:03:02,180 --> 00:03:05,860 Jag kan då ha huvud högst upp på min fil som jag hoppades, och jag kan faktiskt 58 00:03:05,860 --> 00:03:07,440 implementera utskriftsnamnet längst ner. 59 00:03:07,440 --> 00:03:12,860 >> Om jag nu återgå till mitt terminalfönster och kompilera funktion noll med smink, 60 00:03:12,860 --> 00:03:14,390 den här gången sammanställer. 61 00:03:14,390 --> 00:03:18,240 Och om jag kör det med punkt snedstreck funktion noll ger mitt namn, jag är 62 00:03:18,240 --> 00:03:20,650 hälsades som "Hej, David." 63 00:03:20,650 --> 00:03:22,268