>> SPEAKER 1: Jadi aku merasa seperti saya cenderung untuk menulis printf hello world atau printf
halo persen s cukup sering dalam konteks di mana saya ingin mencetak
String, kadang-kadang meminta pengguna bagian dari string tersebut.
Nah, bukankah akan lebih baik jika kita buat fungsi dari kami sendiri disebut,
mengatakan, nama cetak, yang tujuannya dalam hidup hanya untuk mencetak halo koma
begitu-dan-jadi dengan menerima begitu-dan-jadi sebagai argumen untuk fungsi itu?
Kita dapat mendeklarasikan fungsi kita sendiri sama seperti kita dapat di Scratch sebagai berikut.
>> Dengan kata lain, misalkan saya ingin printf nama Anda dan kemudian meminta pengguna
nama nya dengan tali s sama GetString.
Dan kemudian saya ingin memanggil fungsi disebut nama cetak
melewatkan sebagai input.
>> Sekarang sayangnya, tidak ada fungsi disebut nama cetak di C atau di
perpustakaan CS50.
Tapi tak masalah, karena kita bisa membuatnya sendiri.
Untuk menyatakan fungsi kita sendiri dan kemudian menerapkannya, kita hanya dapat membuat
beberapa ruang di file ini dan menyatakan fungsi ini sebagai berikut, kekosongan -
menandakan bahwa fungsi tidak benar-benar akan mengembalikan sesuatu,
meskipun akan memiliki efek samping -
nama cetak, dan kemudian mari kita tentukan di kurung nama cetak mengharapkan
argumen tipe string.
Dan secara umum, kita akan berpikir itu sebagai nama.
>> Dan mari kita buka brace kami dan menutup brace kami.
Dan kemudian printf dalam halo koma Nama jalur koma baru persen s.
Dengan kata lain, meskipun ini fungsi hanya satu baris kode, itu
tidak sekarang memiliki beberapa tinggi Tujuan tingkat untuk mencetak
nama seseorang dengan ucapan.
>> Sekarang dalam utama, perhatikan bahwa aku memanggil nama cetak dengan melewatkan s.
Dan jadi saya tampaknya sekarang memiliki sebuah program yang lengkap.
Satu-satunya perbedaan adalah dari orang lain kami telah menulis adalah bahwa tidak hanya
Program ini telah utama, juga memiliki deklarasi dan implementasi
Nama cetak, fungsi dari saya sendiri.
>> Sekarang mari kita mengkompilasi program saya dengan make fungsi nol, dan menjalankannya dengan dot
slash fungsi nol.
Ketika diminta untuk nama saya Aku akan ketik David.
Dan saya memang saya disambut dengan "Halo, David."
>> Sekarang, ternyata aku sangat sengaja Nama cetak yang dinyatakan di atas utama,
dengan demikian memberitahu C di muka bahwa ada ada fungsi yang disebut print
nama sehingga saya bisa menggunakan nanti di utama.
Sekarang, telah saya bukan menempatkan nama cetak pada bagian bawah file saya, terus terang saya
mungkin harus melakukan agar tetap utama hal pertama yang saya atau
pengguna lain melihat dalam kode saya, ternyata kode saya adalah
tidak akan dikompilasi.
>> Secara khusus, jika saya kembali ke saya window terminal dan menjalankan membuat fungsi
nol sekarang, perhatikan bahwa aku berteriak.
Jika saya gulir ke atas dalam jendela terminal saya, Aku akan melihat kesalahan pertama ini merah,
deklarasi implisit nama fungsi cetak.
>> Sekarang, apa artinya?
Yah, meskipun saya telah menerapkan mencetak nama dalam file ini, saya tidak punya
dilaksanakan sebelum aku sudah menggunakannya dalam utama.
Sekarang, kita bisa kembali ke yang lama versi dan nama cetak menempatkan ini
implementasi atas.
>> Tapi aku malah bisa hanya memberikan C petunjuk bahwa ada fungsi yang akan datang.
Secara khusus, di atas utama saya dapat menyatakan mencetak nama hanya seperti yang saya lakukan sebelumnya, tetapi
mengakhiri baris dengan titik koma, sehingga menjanjikan untuk menerapkan tetapi belum
benar-benar menerapkan fungsi disebut nama cetak.
Saya kemudian dapat memiliki utama di bagian atas saya mengajukan seperti aku berharap, dan aku benar-benar bisa
mengimplementasikan cetak nama di bagian bawah.
>> Jika saya sekarang kembali ke jendela terminal saya dan mengkompilasi ulang fungsi nol dengan make,
kali ini mengkompilasi.
Dan jika saya menjalankannya dengan fungsi slash dot zero memberikan nama saya, saya
disambut sebagai "Halo, David."