1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> 1 głośnik: Tak czuję, że mają tendencję do Napisać printf hello world lub printf 3 00:00:04,010 --> 00:00:08,160 witam procent a dość często w kontekstach gdzie chcę wydrukować 4 00:00:08,160 --> 00:00:11,360 ciąg, czasami prosząc część użytkownik tego łańcucha. 5 00:00:11,360 --> 00:00:14,980 Cóż, nie byłoby miło, jeśli stworzyliśmy Funkcja własne nazywa, 6 00:00:14,980 --> 00:00:19,900 powiedzieć, nazwę druku, którego celem w życiu jest po prostu wydrukować komentarzy przecinek 7 00:00:19,900 --> 00:00:24,560 tak-i-tak, przyjmując to i tak jako argument tej funkcji? 8 00:00:24,560 --> 00:00:29,220 Możemy zadeklarować funkcję własny po prostu, jak to możliwe w Scratch następująco. 9 00:00:29,220 --> 00:00:35,280 >> Innymi słowy, załóżmy, że chciałbym printf swoje imię, a następnie zwrócić się do użytkownika 10 00:00:35,280 --> 00:00:39,470 na swoje nazwisko z ciągu znaków y jest równa GetString. 11 00:00:39,470 --> 00:00:42,060 A potem chcę wywołać funkcję nazwie nazwa druku 12 00:00:42,060 --> 00:00:44,340 przechodząc s jako wejścia. 13 00:00:44,340 --> 00:00:47,770 >> Teraz, niestety, nie ma funkcji nazwie nazwa wydruku w C lub w 14 00:00:47,770 --> 00:00:48,950 Biblioteka CS50. 15 00:00:48,950 --> 00:00:51,220 Ale nie ważne, bo może zrobić to sami. 16 00:00:51,220 --> 00:00:54,560 Zadeklarować funkcji własnych i następnie wdrożyć go, możemy po prostu zrobić 17 00:00:54,560 --> 00:00:59,000 jakiś pokój w tym pliku i deklarują ta funkcja w następujący sposób, nieważne - 18 00:00:59,000 --> 00:01:01,900 co oznacza, że ​​funkcja nie jest rzeczywiście zamierza powrócić coś, 19 00:01:01,900 --> 00:01:03,890 nawet jeśli będzie to miało efekt uboczny - 20 00:01:03,890 --> 00:01:08,030 wydrukować nazwę, a następnie niech określić w nawiasie nazwa druku oczekuje 21 00:01:08,030 --> 00:01:09,680 argument typu string. 22 00:01:09,680 --> 00:01:12,180 A w ogóle, będziemy myśleć o, że jako nazwy. 23 00:01:12,180 --> 00:01:15,140 >> I otwórzmy nasze klamra i zamknąć naszą nawias. 24 00:01:15,140 --> 00:01:21,930 A następnie printf wewnątrz komentarzy przecinek Procent s nowa nazwa linii przecinek. 25 00:01:21,930 --> 00:01:24,570 Innymi słowy, chociaż Funkcja tylko jedna linia kodu, to 26 00:01:24,570 --> 00:01:27,290 ma teraz trochę większe Celem poziom do druku 27 00:01:27,290 --> 00:01:28,950 czyjeś imię z powitania. 28 00:01:28,950 --> 00:01:33,115 >> Teraz wewnątrz głównej, zauważysz, że jestem wzywając imienia druku przechodząc s. 29 00:01:33,115 --> 00:01:35,830 I tak wydaje mi się teraz, aby mieć kompletny program. 30 00:01:35,830 --> 00:01:38,650 Jedyna różnica jest z innymi mamy napisane jest, że nie tylko nie 31 00:01:38,650 --> 00:01:42,480 Ten program nie głównym, ma też deklaracja i realizacja 32 00:01:42,480 --> 00:01:44,740 nazwa wydruku, funkcja sama. 33 00:01:44,740 --> 00:01:49,505 >> Załóżmy teraz skompilować mój program z make Funkcja zero, i uruchomić go z kropką 34 00:01:49,505 --> 00:01:51,080 zerowania slash. 35 00:01:51,080 --> 00:01:53,390 Gdy pojawi się monit o moim imieniu Będę wpisać David. 36 00:01:53,390 --> 00:01:55,830 A ja rzeczywiście jestem witany z "Witaj, David." 37 00:01:55,830 --> 00:02:00,160 >> Teraz okazuje się, że bardzo świadomie zadeklarowana nazwa wydruku powyżej głównym, 38 00:02:00,160 --> 00:02:03,860 co mówi C z góry, że nie istnieje funkcja o nazwie print 39 00:02:03,860 --> 00:02:06,930 nazwać tak, że mogę korzystać to później w głównym. 40 00:02:06,930 --> 00:02:11,610 Teraz, gdybym zamiast umieścić nazwę drukarki w Dno moim pliku, a szczerze mówiąc 41 00:02:11,610 --> 00:02:15,310 prawdopodobnie powinien to zrobić, że główne szczątki Pierwszą rzeczą, że albo 42 00:02:15,310 --> 00:02:18,450 inny użytkownik widzi w kodzie, Okazuje się, że mój kod jest 43 00:02:18,450 --> 00:02:19,780 nie zamierza skompilować. 44 00:02:19,780 --> 00:02:23,610 >> W szczególności, jeśli wrócę do mojego okno terminalu i uruchom make funkcji 45 00:02:23,610 --> 00:02:26,120 zera teraz zauważyć, że jestem krzyknął. 46 00:02:26,120 --> 00:02:30,340 Jeśli przewijać się w moim oknie terminala, Zobaczymy to pierwszy błąd w kolorze czerwonym, 47 00:02:30,340 --> 00:02:33,120 niejawna deklaracja nazwa funkcji drukowania. 48 00:02:33,120 --> 00:02:34,220 >> Teraz, co to oznacza? 49 00:02:34,220 --> 00:02:37,190 Cóż, mimo że zostały wdrożone wydrukować nazwy w tym pliku, nie mam 50 00:02:37,190 --> 00:02:40,080 wdrożone go przed Mam stosować go w głównym. 51 00:02:40,080 --> 00:02:43,160 Teraz możemy wrócić do starych wersję i umieścić nazwę druku 52 00:02:43,160 --> 00:02:44,450 wdrożenie się do góry. 53 00:02:44,450 --> 00:02:48,730 >> Ale może zamiast po prostu dać C podpowiedź że istnieje funkcja przyjść. 54 00:02:48,730 --> 00:02:55,390 W szczególności, nad głównym mogę zadeklarować wydrukować nazwę tak jak ja wcześniej, ale 55 00:02:55,390 --> 00:02:59,450 zakończyć linię średnikiem, a tym samym obiecując realizacji, ale jeszcze nie 56 00:02:59,450 --> 00:03:02,180 faktycznie realizacji funkcji nazwie nazwa wydruku. 57 00:03:02,180 --> 00:03:05,860 Mogę wtedy głównym na górze moja złożyć jak miałem nadzieję, i może faktycznie 58 00:03:05,860 --> 00:03:07,440 wdrożenia nazwę wydruku na dole. 59 00:03:07,440 --> 00:03:12,860 >> Gdybym teraz wrócić do mojego oknie terminala i zerowania rekompilacji z marki, 60 00:03:12,860 --> 00:03:14,390 tym razem kompiluje. 61 00:03:14,390 --> 00:03:18,240 A jeśli uruchomię go z funkcji slash dot zera zapewniając moje imię, jestem 62 00:03:18,240 --> 00:03:20,650 powitany jako "Witaj, David." 63 00:03:20,650 --> 00:03:22,268