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

Mengapakah Nama Fungsi Boleh Digunakan sebagai Penunjuk Fungsi dalam C90?

Susan Sarandon
Lepaskan: 2024-11-12 03:22:02
asal
1002 orang telah melayarinya

Why Can Function Names Be Used as Function Pointers in C90?

Menggunakan Nama Fungsi sebagai Penunjuk Fungsi

Dokumen rasional C90 memberikan gambaran tentang pilihan reka bentuk untuk menyamakan nama fungsi dengan penunjuk fungsi. Kemudahan ini memudahkan penggunaan penunjuk fungsi dalam konteks tertentu.

Pengisytiharan Fungsi

Pertimbangkan pengisytiharan:

int f();
int (*pf)();
Salin selepas log masuk

Panggilan Fungsi

Semua berikut menyatakan fungsi sah panggilan:

(&f)();
f();
(*f)();
(**f)();
(***f)();

pf();
(*pf)();
(**pf)();
(***pf)();
Salin selepas log masuk

Ungkapan pertama pada setiap baris telah diliputi sebelum ini. Yang kedua adalah konvensional. Ungkapan seterusnya membayangkan penukaran tersirat penentu fungsi kepada nilai penunjuk dalam kebanyakan konteks.

Rasional Reka Bentuk

Jawatankuasa tidak melihat sebarang kelemahan yang ketara untuk membenarkan borang ini dan melihat mengharamkan mereka sebagai usaha yang berlebihan. Oleh itu, kesetaraan antara penentu fungsi dan penuding fungsi menawarkan kemudahan dalam penggunaan penuding.

Penukaran Tersirat

Satu lagi pemerhatian menarik ialah penukaran tersirat jenis fungsi kepada penunjuk apabila digunakan sebagai parameter tetapi bukan sebagai jenis pulangan:

typedef bool FunctionType(int);
void g(FunctionType); // Implicitly converts to void g(FunctionType *)
FunctionType h(); // Error
FunctionType *j(); // Returns a function pointer with the type bool(int)
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah Nama Fungsi Boleh Digunakan sebagai Penunjuk Fungsi dalam C90?. 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