[Powered by Google Translate] CHRIS Gerber: Fungsi adalah satu siri langkah-langkah dalam masa program yang lebih besar, yang biasanya bertujuan untuk dipanggil beberapa kali dan dari pelbagai lokasi lain di program. Apabila mewujudkan fungsi C, salah satu keperluan untuk menentukan jenis nilai pulangan. Kes yang paling mudah adalah satu keadaan di mana memanggil kod tidak bimbang dengan hasil fungsi. Ini mungkin kes itu apabila kita mencetak data kepada paparan pengguna, seperti printf. Dalam kes ini, kita boleh mengisytiharkan nilai pulangan menjadi terbatal jenis. Menggunakan terbatal hanya memberitahu pengkompil bahawa tiada nilai akan dikembalikan. Mari kita lihat apa ini kelihatan seperti. Mari kita mengatakan bahawa kita mempunyai satu fungsi yang dipanggil say_hello yang mengambil satu hujah. Kami akan lulus ia nama seseorang dan ia akan memaparkan ucapan pada skrin. Nama akan * char jenis. Dan kita akan menentukan bahawa sebagai hujah. Permohonan saya tidak perlu tahu apa yang telah dicetak atau jika ia telah dicetak. Jadi nilai pulangan akan menjadi tidak sah jenis. Fungsi ini boleh mencetak skrin dengan arahan seperti printf ("Hello,% s \ n ", Nama);. Ucapan akan dipaparkan dan kawalan akan lulus kembali ke kod memanggil. Satu perkara yang perlu diperhatikan adalah bahawa apabila jenis nilai pulangan tidak sah, anda tidak perlu untuk memasukkan kembali kenyataan dalam fungsi. Jika anda memilih untuk menyertakan satu, tidak termasuk nilai pulangan sebagai hujah. Dalam beberapa kes, ia masuk akal untuk mengembalikan nilai dari fungsi. Mari kita mengatakan bahawa kita telah menulis satu fungsi yang dipanggil add_floats. Kami akan lulus dua hujah, kedua-dua terapung, dipanggil pertama dan kedua. Dan ia akan memberitahu kita apa jumlah mereka terapung. Kita tahu bahawa jika kita menambah dua terapung bersama-sama, hasilnya akan apungan. Diberi bahawa, kita memilih jenis pulangan apungan. Fungsi ini akan melaksanakan pengiraan ini dan kembalikan nilai dalam satu kenyataan seperti pulangan pertama + kedua;. Apabila kawalan berlalu kembali kepada kod memanggil, mengakibatkan nilai kini disediakan kepada kod itu. Kita boleh menyimpan nilai ini seperti begitu: hasil apungan = add_floats (3.14, 1,62 );. Keputusan dalam kes ini kini akan mengandungi nilai 4,76. Sebagai peringatan, nilai titik terapung adalah tidak tepat. Jadi, jika ini adalah pengiraan kewangan, menggunakan dolar dan sen, kita mungkin mahu mempertimbangkan jenis data yang tepat seperti int dan melaksanakan pengiraan dalam beberapa sen. Satu lagi kes di mana kita mahu untuk mengembalikan nilai dari fungsi adalah apabila kita hendak tahu jika fungsi itu berjaya. Jika ia tidak berjaya, kita juga mungkin mahu tahu apa jenis kesalahan berlaku. Mari kita mengatakan bahawa kita sedang cuba untuk membuka fail pada cakera untuk dikira bilangan aksara di dalamnya. Jika fail tidak boleh dibuka, kita mahu dapat menghentikan dan memberitahu pengguna tentang masalah ini. Kami akan memanggil count_file_chars fungsi kami dan ia akan mengambil satu hujah. Kami akan lulus dalam nama fail menggunakan char * dipanggil nama fail. Fungsi ini mungkin kelihatan sesuatu seperti ini. Dalam contoh ini, kita akan menjangkakan kiraan kembali ke 0 atau lebih. Ini meninggalkan kita integer negatif kepada digunakan sebagai nilai sentinel. Satu nilai sentinel hanya nilai khas yang tidak data sah tetapi tidak menyampaikan maklumat. Di sini, jika saya pulang -1 hingga kod memanggil, saya sebenarnya menghantar mesej ralat berlaku semasa cuba untuk mengakses fail. Saya kemudian dapat menyemak bahawa nilai kembali untuk menentukan jika saya panggilan fungsi berjaya. Jika nombor itu adalah 0 atau lebih, saya ingin tahu bilangan aksara dalam fail. Walau bagaimanapun, jika nombor adalah kurang daripada 0, saya dapat hanya mencetak bahawa masalah telah berlaku. Satu trade-off perlu dipertimbangkan ialah bahawa oleh menempah semua nilai-nilai negatif sebagai nilai sentinel, dengan anggapan ini adalah Integer 32-bit, saya telah pada dasarnya diambil dari sekitar 2000000000 pulangan nilai yang mungkin. Jenis nilai pulangan adalah salah satu elemen yang paling penting fungsi panggilan. Semoga gambaran singkat ini telah membantu anda berfikir tentang tiga jenis utama: terbatal, nilai hasil, dan nilai-nilai sentinel, dan apabila setiap tiga mungkin sesuai dalam kod anda. Terima kasih kerana menonton.