1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> Tagapagsalita 1: Kaya sa tingin ko ay may posibilidad na tulad kong sumulat printf kumusta mundo o printf 3 00:00:04,010 --> 00:00:08,160 kumusta porsiyento s medyo madalas sa konteksto kung saan ko nais na i-print ang isang 4 00:00:08,160 --> 00:00:11,360 string, minsan nagtatanong ang bahagi ng na string ng user. 5 00:00:11,360 --> 00:00:14,980 Well, Gusto hindi ito maging maganda kung lumikha kami isang katangian ng ating sariling tinatawag na, 6 00:00:14,980 --> 00:00:19,900 sabihin, pangalan ng pag-print, na ang layunin sa buhay ay simpleng i-print kumusta kuwit 7 00:00:19,900 --> 00:00:24,560 kaya-at-kaya sa pamamagitan ng pagtanggap sa gayon-at-kaya bilang isang argumento sa na pagpapaandar? 8 00:00:24,560 --> 00:00:29,220 Maaari naming magpahayag ng isang katangian ng ating sariling bilang lamang ng aming makakaya sa scratch tulad ng sumusunod. 9 00:00:29,220 --> 00:00:35,280 >> Sa madaling salita, ipagpalagay na nais kong printf ang iyong pangalan at pagkatapos ay tanungin ang user 10 00:00:35,280 --> 00:00:39,470 para sa kanyang pangalan na may string s ay katumbas ng GetString. 11 00:00:39,470 --> 00:00:42,060 At pagkatapos ay gusto kong tumawag sa isang function tinatawag na pangalan sa pag-print 12 00:00:42,060 --> 00:00:44,340 pagpasa ng mga bilang ng pag-input nito. 13 00:00:44,340 --> 00:00:47,770 >> Ngayon sa kasamaang-palad, walang pag-andar tinatawag na pangalan sa pag-print sa C o sa 14 00:00:47,770 --> 00:00:48,950 ang cs50 library. 15 00:00:48,950 --> 00:00:51,220 Ngunit hindi mahalaga, dahil kami Maaari gawin itong ating sarili. 16 00:00:51,220 --> 00:00:54,560 Upang magpahayag ng isang katangian ng ating sariling at pagkatapos ay ipatupad ito, maaari lang kaming magsagawa ng 17 00:00:54,560 --> 00:00:59,000 ilang mga kuwarto sa file na ito at ipinapahayag ito function na tulad ng sumusunod, walang bisa - 18 00:00:59,000 --> 00:01:01,900 signifying na ang function ay hindi talagang pagpunta upang magbalik ng bagay, 19 00:01:01,900 --> 00:01:03,890 kahit na magkakaroon ito isang side effect - 20 00:01:03,890 --> 00:01:08,030 i-print ang pangalan, at pagkatapos ay sabihin tumukoy sa panaklong na pangalan sa pag-print Inaasahan ng isang 21 00:01:08,030 --> 00:01:09,680 argumento ng uri ng string. 22 00:01:09,680 --> 00:01:12,180 At sa pangkalahatan, ipapakita namin sa tingin ng na bilang ng pangalan. 23 00:01:12,180 --> 00:01:15,140 >> At buksan ng aming suhay ipaalam at isara ang aming suhay. 24 00:01:15,140 --> 00:01:21,930 At pagkatapos ay sa loob printf kumusta kuwit bagong pangalan linya kuwit porsiyento s. 25 00:01:21,930 --> 00:01:24,570 Sa ibang salita, kahit na ito function na lamang isang linya ng code, ito 26 00:01:24,570 --> 00:01:27,290 ay ngayon ay may ilang mga mas mataas na antas ng layunin sa pag-print 27 00:01:27,290 --> 00:01:28,950 pangalan ng isang tao na may isang pagbati. 28 00:01:28,950 --> 00:01:33,115 >> Ngayon sa loob ng main, mapapansin na ako pagtawag sa pangalan ng naka-print sa pamamagitan ng pagpapasa ng isang s. 29 00:01:33,115 --> 00:01:35,830 At kaya ako ay tila mayroon ngayon isang kumpletong programa. 30 00:01:35,830 --> 00:01:38,650 Ang pagkakaiba lamang pagiging mula sa iba na naisulat namin ay na hindi lamang 31 00:01:38,650 --> 00:01:42,480 na pangunahing, mayroon din itong program na ito pahayag at pagpapatupad ng mga 32 00:01:42,480 --> 00:01:44,740 pangalan ng naka-print, isang katangian ng aking sariling. 33 00:01:44,740 --> 00:01:49,505 >> Ngayon compile ng aking mga programa na may make Hayaan function ng zero, at patakbuhin ito sa tuldok 34 00:01:49,505 --> 00:01:51,080 iwa function ng zero. 35 00:01:51,080 --> 00:01:53,390 Kapag sinenyasan para sa aking pangalan Makikita nagta-type ako sa David. 36 00:01:53,390 --> 00:01:55,830 At ako nga ako ay greeted may "Hello, si David." 37 00:01:55,830 --> 00:02:00,160 >> Ngayon, ito ay lumiliko out napaka ko sadya ipinahayag pangalan sa pag-print sa itaas main, 38 00:02:00,160 --> 00:02:03,860 sa gayong paraan ng pagsasabi C nang maaga na doon Umiiral na ang isang function na tinatawag na pag-print 39 00:02:03,860 --> 00:02:06,930 pangalanan nang sa gayon ay maaari ko bang gamitin ang mamaya ito sa pangunahing. 40 00:02:06,930 --> 00:02:11,610 Ngayon, si ko sa halip ilagay ang pangalan ng naka-print sa sa ilalim ng aking mga file, na lantaran ako 41 00:02:11,610 --> 00:02:15,310 marahil ay dapat gawin ito na pangunahing labi ang unang bagay na ako o 42 00:02:15,310 --> 00:02:18,450 nakikita ng ibang gumagamit sa aking code, ito ay lumiliko out na ang aking code ay 43 00:02:18,450 --> 00:02:19,780 hindi pagpunta sa sumulat ng libro. 44 00:02:19,780 --> 00:02:23,610 >> Sa partikular, kung pumunta ako pabalik sa aking terminal na window at patakbuhin ang gumawa ng function 45 00:02:23,610 --> 00:02:26,120 zero ngayon, mapapansin na ako yelled sa. 46 00:02:26,120 --> 00:02:30,340 Kung mag-scroll pataas ko sa aking terminal na window, Kukunin ko makita ito sa unang error sa pula, 47 00:02:30,340 --> 00:02:33,120 implicit deklarasyon ng pangalan ng naka-print na function. 48 00:02:33,120 --> 00:02:34,220 >> Ngayon, kung ano ang ibig sabihin na? 49 00:02:34,220 --> 00:02:37,190 Well, kahit na naipatupad ko i-print ang pangalan sa file na ito, na hindi ko na hindi 50 00:02:37,190 --> 00:02:40,080 ipinatupad ito bago ko nai Ginagamit ito sa pangunahing. 51 00:02:40,080 --> 00:02:43,160 Ngayon, maaari naming bumalik sa lumang bersyon at ilagay ang pangalan ng naka-print na ni 52 00:02:43,160 --> 00:02:44,450 pagpapatupad up tuktok. 53 00:02:44,450 --> 00:02:48,730 >> Ngunit sa halip ko mabibigyan lamang C isang pahiwatig na mayroong isang function na dumating. 54 00:02:48,730 --> 00:02:55,390 Sa partikular, sa itaas pangunahing maaari kong idedeklara i-print ang pangalan lang tulad ng ginawa ko mas maaga, ngunit 55 00:02:55,390 --> 00:02:59,450 tapusin ang linya na may semicolon, at sa gayon may pag-asa na ipapatupad ngunit hindi pa 56 00:02:59,450 --> 00:03:02,180 talaga ang pagpapatupad ng pag-andar tinatawag na pangalan sa pag-print. 57 00:03:02,180 --> 00:03:05,860 Maaari kong pagkatapos ay mayroon pangunahing sa tuktok ng aking maghain bilang umaasa ako, at maaari ko talaga 58 00:03:05,860 --> 00:03:07,440 ipatupad ang pangalan sa pag-print sa ibaba. 59 00:03:07,440 --> 00:03:12,860 >> Kung ngayon bumalik ako sa aking terminal na window at mag-recompile function na zero may make, 60 00:03:12,860 --> 00:03:14,390 oras na ito ito compiles. 61 00:03:14,390 --> 00:03:18,240 At kung tumakbo ko ito na may tuldok function na slash zero pagbibigay ng aking pangalan, ako 62 00:03:18,240 --> 00:03:20,650 greeted bilang "Hello, si David." 63 00:03:20,650 --> 00:03:22,268