Rumah >pembangunan bahagian belakang >C++ >Mengapakah Nama Fungsi Digunakan sebagai Penunjuk Fungsi dalam C?

Mengapakah Nama Fungsi Digunakan sebagai Penunjuk Fungsi dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-11-11 02:29:03453semak imbas

Why are Function Names Used as Function Pointers in C?

Nama Fungsi sebagai Penunjuk Fungsi: Rasional Reka Bentuk

Dalam C, menggunakan nama fungsi sebagai penunjuk fungsi adalah bersamaan dengan menggunakan alamat- operator kepada nama fungsi. Tingkah laku ini mungkin kelihatan tidak konsisten dengan bahagian lain dalam bahasa dan menimbulkan persoalan tentang rasional reka bentuknya.

Dokumen Rasional ANSI C90 memberikan cerapan tentang keputusan reka bentuk ini:

  1. Kemudahan : Ia memudahkan fungsi panggilan yang merupakan sebahagian daripada struktur yang lebih besar. Sebagai contoh, daripada menulis (*graphics.open)(fail), pembangun boleh menggunakan grafik yang lebih ringkas.open(file).
  2. Fleksibiliti Sintaksis: Persamaan antara penentu fungsi dan penunjuk membolehkan pelbagai bentuk sintaksis untuk memanggil fungsi:
(&f)();        // Explicit address-of operator
f();            // Implicit conversion to function pointer
(*f)();        // Deference of a function pointer
(**f)();       // Deference twice
(***f)();      // Deference three times
  1. Ketekalan dengan Penunjuk kepada Nama Tatasusunan: Walaupun bahasa melarang pemberian &a kepada int* dengan a ialah tatasusunan, ia membenarkan perkara yang sama operasi untuk penunjuk fungsi dan penunjuk fungsi. Asimetri ini dilihat kurang memudaratkan daripada melarang penggunaan penentu fungsi sebagai penunjuk.

Mengenai ketiadaan penukaran tersirat daripada jenis fungsi kepada jenis penunjuk dalam konteks pulangan, penjelasannya terletak pada konsep " hiasan jenis pulangan." Dalam C, jenis pengembalian fungsi adalah sebahagian daripada tandatangan fungsi dan tidak boleh diubah suai. Oleh itu, fungsi tidak boleh secara tersirat mengembalikan penuding kepada dirinya sendiri.

Atas ialah kandungan terperinci Mengapakah Nama Fungsi Digunakan sebagai Penunjuk Fungsi dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn