1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> SPEAKER 1: Tak mám pocit, že mají tendenci napsat printf hello world nebo printf 3 00:00:04,010 --> 00:00:08,160 ahoj procent je poměrně často v souvislostech kde chci vytisknout 4 00:00:08,160 --> 00:00:11,360 řetězec, někdy žádat Uživatelská část tohoto řetězce. 5 00:00:11,360 --> 00:00:14,980 No, nebylo by to bylo hezké, kdybychom vytvořili Funkce naše volal, 6 00:00:14,980 --> 00:00:19,900 říci, název tiskového, jehož smysl života je jednoduše vytisknout ahoj čárka 7 00:00:19,900 --> 00:00:24,560 tak-a-tak přijetím tak-a-tak jako argument pro tuto funkci? 8 00:00:24,560 --> 00:00:29,220 Můžeme deklarovat funkci vlastní stejně jako můžeme v Scratch takto. 9 00:00:29,220 --> 00:00:35,280 >> Jinými slovy, že bych chtěl printf své jméno a pak požádat uživatele 10 00:00:35,280 --> 00:00:39,470 pro jeho nebo její jméno s řetězcem s se rovná GetString. 11 00:00:39,470 --> 00:00:42,060 A pak chci, aby volání funkce volal název tiskového 12 00:00:42,060 --> 00:00:44,340 složením s jako jeho vstup. 13 00:00:44,340 --> 00:00:47,770 >> Teď bohužel, není funkce volal název tiskového v C nebo v 14 00:00:47,770 --> 00:00:48,950 CS50 knihovny. 15 00:00:48,950 --> 00:00:51,220 Ale bez ohledu na to, protože jsme může dělat to sami. 16 00:00:51,220 --> 00:00:54,560 Chcete-li deklarovat funkci vlastní a pak ji realizovat, můžeme jednoduše udělat 17 00:00:54,560 --> 00:00:59,000 některé pokoje v tomto souboru a prohlásit tato funkce takto, void - 18 00:00:59,000 --> 00:01:01,900 znamenat, že funkce není vlastně bude vracet něco, 19 00:01:01,900 --> 00:01:03,890 i když to bude mít vedlejší efekt - 20 00:01:03,890 --> 00:01:08,030 tisknout název, a pak se pojďme specifikovat závorky, že název tiskového očekává, 21 00:01:08,030 --> 00:01:09,680 argument typu string. 22 00:01:09,680 --> 00:01:12,180 A obecně, tak si myslíme, že z toho jako dříve. 23 00:01:12,180 --> 00:01:15,140 >> A pojďme otevřít naše ortézy a zavřete naši ortézu. 24 00:01:15,140 --> 00:01:21,930 A pak printf uvnitř ahoj čárka procent je nový název linky čárkou. 25 00:01:21,930 --> 00:01:24,570 Jinými slovy, i když to funkce je pouze jeden řádek kódu, je 26 00:01:24,570 --> 00:01:27,290 co nyní mají některé vyšší účel tisku úrovně 27 00:01:27,290 --> 00:01:28,950 něčí jméno s pozdravem. 28 00:01:28,950 --> 00:01:33,115 >> Nyní uvnitř hlavní, všimněte si, že jsem volá název tiskového složením s. 29 00:01:33,115 --> 00:01:35,830 A tak se mi zdá, nyní mají kompletní program. 30 00:01:35,830 --> 00:01:38,650 Jediným rozdílem je od ostatních psali jsme, že nejenže 31 00:01:38,650 --> 00:01:42,480 Tento program se hlavní, to také má prohlášení a realizace 32 00:01:42,480 --> 00:01:44,740 Jméno tisk, funkce z mé vlastní. 33 00:01:44,740 --> 00:01:49,505 >> Pojďme se nyní sestavit svůj program s make funkce nulová, a spusťte jej s tečkou 34 00:01:49,505 --> 00:01:51,080 lomítko funkci nulový. 35 00:01:51,080 --> 00:01:53,390 Po zobrazení výzvy pro mé jméno Budu psát David. 36 00:01:53,390 --> 00:01:55,830 A já opravdu jsem pozdravil s "Ahoj, Davide." 37 00:01:55,830 --> 00:02:00,160 >> Nyní se ukazuje, že jsem velice uváženě prohlásil tiskový jméno nad hlavní, 38 00:02:00,160 --> 00:02:03,860 čímž se říká, C v předem, že tam existuje funkce nazvaná tisku 39 00:02:03,860 --> 00:02:06,930 pojmenovat tak, že bych mohl použít to později v hlavní. 40 00:02:06,930 --> 00:02:11,610 Teď, kdybych místo toho dal název tiskového na Spodní část mého souboru, jak upřímně jsem 41 00:02:11,610 --> 00:02:15,310 Asi by se to tak, že hlavní ostatky První věc, kterou jsem, nebo 42 00:02:15,310 --> 00:02:18,450 jiný uživatel vidí v mém kódu, Ukazuje se, že můj kód je 43 00:02:18,450 --> 00:02:19,780 nebude kompilovat. 44 00:02:19,780 --> 00:02:23,610 >> Konkrétně, pokud se vrátím k mému okno terminálu a spustit, aby funkce 45 00:02:23,610 --> 00:02:26,120 nula teď si všimněte, že jsem křičel. 46 00:02:26,120 --> 00:02:30,340 Kdybych přejděte do okna mého terminálu, Uvidíme se tento první chyba v červené barvě, 47 00:02:30,340 --> 00:02:33,120 implicitní prohlášení název funkce tisku. 48 00:02:33,120 --> 00:02:34,220 >> A teď, co to znamená? 49 00:02:34,220 --> 00:02:37,190 No, i když jsem realizován tisknout název tohoto souboru, jsem to 50 00:02:37,190 --> 00:02:40,080 realizována dříve, než jsem používá se v hlavním okně. 51 00:02:40,080 --> 00:02:43,160 Teď, mohli bychom se vrátit ke staré verze a dát název tisk je 52 00:02:43,160 --> 00:02:44,450 implementace do top. 53 00:02:44,450 --> 00:02:48,730 >> Ale já si místo toho jen dát C tip že je tu funkce, která přijde. 54 00:02:48,730 --> 00:02:55,390 Konkrétně, nad hlavním mohu prohlásit, tisknout název, stejně jako jsem to udělal dříve, ale 55 00:02:55,390 --> 00:02:59,450 konec řádku středníkem, a tím slibuje zavést, ale ještě není 56 00:02:59,450 --> 00:03:02,180 ve skutečnosti provádí funkci volal název tisku. 57 00:03:02,180 --> 00:03:05,860 I pak může mít hlavní v horní části mé soubor, jak jsem doufal, a mohu skutečně 58 00:03:05,860 --> 00:03:07,440 realizovat název tiskového ve spodní části. 59 00:03:07,440 --> 00:03:12,860 >> Kdybych se vrátit do svého terminálu a překompilovat funkci nulový s make, 60 00:03:12,860 --> 00:03:14,390 Tentokrát to přeloží. 61 00:03:14,390 --> 00:03:18,240 A když jsem jej spustit s tečkou funkcí lomítkem nula poskytování mé jméno, já jsem 62 00:03:18,240 --> 00:03:20,650 pozdravil jako "Dobrý den, Davide." 63 00:03:20,650 --> 00:03:22,268