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
Lepaskan: 2024-11-11 02:29:03
asal
455 orang telah melayarinya

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
Salin selepas log masuk
  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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan