1 00:00:00,000 --> 00:00:00,160 2 00:00:00,160 --> 00:00:04,010 >> SPEAKER 1: Jadi saya rasa seperti saya cenderung untuk menulis printf hello dunia atau printf 3 00:00:04,010 --> 00:00:08,160 hello peratus Seringkali dalam konteks di mana saya ingin mencetak 4 00:00:08,160 --> 00:00:11,360 tali, kadang-kadang meminta sebahagian pengguna tali itu. 5 00:00:11,360 --> 00:00:14,980 Nah, tidak akan ia lebih baik jika kita dicipta fungsi kita sendiri dipanggil, 6 00:00:14,980 --> 00:00:19,900 mengatakan, nama cetak, yang tujuan dalam hidup adalah semata-mata untuk mencetak hello koma 7 00:00:19,900 --> 00:00:24,560 jadi-dan-jadi dengan menerima polan jadi sebagai hujah dengan fungsi itu? 8 00:00:24,560 --> 00:00:29,220 Kita boleh mengisytiharkan fungsi kita sendiri seperti yang kita boleh dalam Scratch seperti berikut. 9 00:00:29,220 --> 00:00:35,280 >> Dalam erti kata lain, andaikan saya ingin printf nama anda dan kemudian meminta pengguna 10 00:00:35,280 --> 00:00:39,470 nama beliau dengan tali s sama GetString. 11 00:00:39,470 --> 00:00:42,060 Dan kemudian saya mahu panggil fungsi dipanggil nama cetak 12 00:00:42,060 --> 00:00:44,340 lulus s sebagaimana input. 13 00:00:44,340 --> 00:00:47,770 >> Sekarang malangnya, tidak ada fungsi dipanggil nama cetak dalam C atau dalam 14 00:00:47,770 --> 00:00:48,950 perpustakaan cs50. 15 00:00:48,950 --> 00:00:51,220 Tetapi tidak kira, kerana kita boleh membuat ia diri kita sendiri. 16 00:00:51,220 --> 00:00:54,560 Untuk mengisytiharkan fungsi kita sendiri dan kemudian melaksanakannya, kita hanya boleh membuat 17 00:00:54,560 --> 00:00:59,000 beberapa bilik dalam fail ini dan mengisytiharkan fungsi ini seperti berikut, tidak sah - 18 00:00:59,000 --> 00:01:01,900 menandakan bahawa fungsi bukan sebenarnya akan kembali sesuatu, 19 00:01:01,900 --> 00:01:03,890 walaupun ia akan mempunyai kesan sampingan - 20 00:01:03,890 --> 00:01:08,030 mencetak nama, dan kemudian mari kita menentukan dalam kurungan bahawa nama cetak menjangkakan 21 00:01:08,030 --> 00:01:09,680 hujah jenis tali. 22 00:01:09,680 --> 00:01:12,180 Dan secara amnya, kita akan berfikir itu sebagai nama. 23 00:01:12,180 --> 00:01:15,140 >> Dan mari kita membuka pendakap kami dan menutup pendakap kami. 24 00:01:15,140 --> 00:01:21,930 Dan kemudian di dalam printf hello koma baru nama talian koma peratus s. 25 00:01:21,930 --> 00:01:24,570 Dalam erti kata lain, walaupun ini fungsi hanya satu baris kod, ia 26 00:01:24,570 --> 00:01:27,290 adakah kini mempunyai beberapa yang lebih tinggi tujuan tahap untuk mencetak 27 00:01:27,290 --> 00:01:28,950 nama seseorang dengan sesuatu ucapan. 28 00:01:28,950 --> 00:01:33,115 >> Sekarang dalam utama, notis bahawa saya memanggil nama cetak dengan melepaskan satu s. 29 00:01:33,115 --> 00:01:35,830 Dan saya seolah-olah kini mempunyai satu program yang lengkap. 30 00:01:35,830 --> 00:01:38,650 Satu-satunya perbezaan menjadi daripada orang lain kami telah menulis bahawa bukan sahaja 31 00:01:38,650 --> 00:01:42,480 program ini telah utama, ia juga mempunyai pengisytiharan dan pelaksanaan 32 00:01:42,480 --> 00:01:44,740 Nama cetak, fungsi saya sendiri. 33 00:01:44,740 --> 00:01:49,505 >> Sekarang mari kita menyusun program saya dengan solekan fungsi sifar, dan menjalankannya dengan titik 34 00:01:49,505 --> 00:01:51,080 mengurangkan fungsi sifar. 35 00:01:51,080 --> 00:01:53,390 Apabila digesa untuk nama saya Saya akan taip Daud. 36 00:01:53,390 --> 00:01:55,830 Dan sesungguhnya aku sedang disambut dengan "Hello, Daud." 37 00:01:55,830 --> 00:02:00,160 >> Sekarang, ternyata saya sangat sengaja diisytiharkan nama cetak di atas utama, 38 00:02:00,160 --> 00:02:03,860 dengan itu memberitahu C terlebih dahulu bahawa terdapat wujud fungsi yang dipanggil cetak 39 00:02:03,860 --> 00:02:06,930 menamakan supaya saya boleh menggunakan kemudian dalam utama. 40 00:02:06,930 --> 00:02:11,610 Sekarang, saya telah meletakkan nama dan bukan cetak pada bahagian bawah fail saya, kerana terus terang saya 41 00:02:11,610 --> 00:02:15,310 mungkin perlu lakukan supaya mayat utama perkara pertama yang saya atau 42 00:02:15,310 --> 00:02:18,450 pengguna lain melihat dalam kod saya, ternyata bahawa kod saya 43 00:02:18,450 --> 00:02:19,780 tidak akan mengumpulkannya. 44 00:02:19,780 --> 00:02:23,610 >> Khususnya, jika saya kembali ke saya tetingkap terminal dan menjalankan membuat fungsi 45 00:02:23,610 --> 00:02:26,120 sifar sekarang, notis bahawa saya menjerit. 46 00:02:26,120 --> 00:02:30,340 Jika saya tatal ke atas dalam tetingkap terminal saya, Saya akan melihat kesilapan pertama ini dalam warna merah, 47 00:02:30,340 --> 00:02:33,120 pengakuan tersirat fungsi nama cetak. 48 00:02:33,120 --> 00:02:34,220 >> Kini, apa maksudnya? 49 00:02:34,220 --> 00:02:37,190 Well, walaupun saya telah dilaksanakan mencetak nama dalam fail ini, saya tidak telah 50 00:02:37,190 --> 00:02:40,080 dilaksanakan sebelum saya telah digunakan dalam utama. 51 00:02:40,080 --> 00:02:43,160 Sekarang, kita boleh kembali kepada yang lama versi dan meletakkan nama cetak ini 52 00:02:43,160 --> 00:02:44,450 pelaksanaan sehingga atas. 53 00:02:44,450 --> 00:02:48,730 >> Tetapi saya boleh dan bukannya hanya memberi C petunjuk bahawa terdapat fungsi yang akan datang. 54 00:02:48,730 --> 00:02:55,390 Khususnya, di atas utama saya boleh mengisytiharkan mencetak nama sahaja seperti yang saya lakukan sebelum ini, tetapi 55 00:02:55,390 --> 00:02:59,450 menamatkan garisan dengan koma bernoktah, dan dengan itu berjanji untuk melaksanakan tetapi belum 56 00:02:59,450 --> 00:03:02,180 sebenarnya melaksanakan fungsi dipanggil nama cetak. 57 00:03:02,180 --> 00:03:05,860 Saya boleh mempunyai utama di bahagian atas saya memfailkan kerana saya berharap, dan saya boleh sebenarnya 58 00:03:05,860 --> 00:03:07,440 melaksanakan nama cetak di bahagian bawah. 59 00:03:07,440 --> 00:03:12,860 >> Jika saya kini kembali ke tetingkap terminal saya dan susun semula fungsi sifar dengan solekan, 60 00:03:12,860 --> 00:03:14,390 kali ini ia menyusun. 61 00:03:14,390 --> 00:03:18,240 Dan jika saya menjalankannya dengan fungsi slash dot sifar memberikan nama saya, saya 62 00:03:18,240 --> 00:03:20,650 disambut sebagai "Hello, Daud." 63 00:03:20,650 --> 00:03:22,268