Persamaan Nama Fungsi dengan Penunjuk Fungsi
Nama fungsi dalam C berfungsi sebagai penunjuk fungsi dan penunjuk fungsi, menyediakan trengkas yang mudah untuk fungsi rujukan . Persamaan ini telah dibahaskan dan rasionalnya terletak pada pertimbangan sejarah dan keinginan untuk memudahkan penggunaan penunjuk fungsi.
Dokumen Rasional C90 menerangkan bahawa penentu fungsi boleh digunakan dalam pelbagai bentuk, termasuk sebagai panggilan fungsi (kedua-duanya dengan dan tanpa pengendali asterisk) dan sebagai penunjuk fungsi. Fleksibiliti ini membolehkan pelbagai pembinaan sintaksis, sesetengah daripadanya mungkin kelihatan luar biasa.
Sebagai contoh, pertimbangkan pengisytiharan berikut:
int f(); int (*pf)();
Di sini, nama fungsi f boleh dipanggil sebagai f( ), *f(), atau pun ***f(). Selain itu, penunjuk fungsi pf boleh dipanggil dengan cara yang sama, seperti pf(), *pf(), atau **pf().
Rasional untuk kesetaraan ini berpunca daripada keinginan untuk memudahkan penggunaan daripada penunjuk fungsi. Dalam kebanyakan kes, adalah lebih mudah untuk menggunakan nama fungsi secara langsung sebagai penunjuk fungsi daripada perlu menggunakan alamat pengendali (&) secara manual. Oleh itu, bahasa membenarkan kesetaraan nama fungsi dan penunjuk fungsi.
Walau bagaimanapun, kesetaraan ini terhad kepada konteks tertentu. Apabila mengembalikan jenis fungsi, jenis fungsi itu sendiri tidak boleh ditukar secara tersirat kepada penuding kepada dirinya sendiri. Ini digambarkan dalam contoh di bawah:
typedef bool FunctionType(int); FunctionType h(); // Error!
Dalam kes ini, h() diisytiharkan sebagai fungsi yang mengembalikan jenis fungsi, tetapi ini tidak boleh ditukar secara tersirat kepada penuding kepada jenis fungsi tersebut. Walau bagaimanapun, apabila digunakan sebagai parameter, jenis fungsi boleh ditukar secara tersirat kepada penuding kepada dirinya sendiri.
FunctionType g(FunctionType); // Implicitly converted to void g(FunctionType *)
Penukaran tersirat ini memudahkan penghantaran penunjuk fungsi sebagai parameter. Secara keseluruhan, kesetaraan nama fungsi dan penunjuk fungsi ialah pilihan reka bentuk yang mengimbangi kemudahan dengan sekatan kontekstual, menjadikannya ciri praktikal dalam pengaturcaraan C.
Atas ialah kandungan terperinci Mengapa Nama Fungsi dan Penunjuk Fungsi Setara dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!