Penunjuk fungsi C++ serasi dengan C, membolehkan fungsi dihantar dan disimpan dengan lancar antara kedua-dua bahasa. Walaupun sintaks pengisytiharan berbeza sedikit (C++ memerlukan kurungan dan pengendali rujukan), penunjuk fungsi C++ serasi dengan penunjuk fungsi C dan boleh dihantar kepada satu sama lain. Ini berguna apabila mengalihkan perpustakaan C, membolehkan penyepaduan mudah fungsi dalam perpustakaan C melalui penunjuk fungsi.
Penunjuk Fungsi C++ dengan Keserasian C: Merapatkan kedua-dua bahasa secara lancar
Penunjuk fungsi ialah konsep utama yang digunakan secara meluas dalam C dan C++, yang membolehkan fungsi diluluskan sebagai parameter atau disimpan dalam pembolehubah tengah. Walaupun kedua-dua C++ dan C adalah bahasa peringkat tinggi, ia mempunyai perbezaan dalam cara ia disusun dan dalam sintaksnya, yang boleh mencipta beberapa cabaran apabila bekerja dengan penunjuk fungsi.
C Function Pointer
Dalam C, penunjuk fungsi diisytiharkan sebagai penunjuk kepada jenis fungsi seperti berikut:
int (*fptr)(int, int);
Pengisytiharan ini mentakrifkan pembolehubah bernama fptr
yang menunjuk ke fungsi yang menerima dua parameter jenis int
dan mengembalikan nilai jenis int
. fptr
的变量,它指向接收两个 int
类型参数并返回 int
类型值的函数。
C++ 函数指针
C++ 中的函数指针声明与 C 类似,但需要考虑一些关键差异:
const
或引用参数或返回类型的函数,需要使用 const
或引用运算符。例如,声明一个指向接收一个 const int
参数并返回 void
的函数的指针:
void (*fptr)(const int&);
C/C++ 函数指针兼容性
尽管声明语法略有不同,C++ 函数指针与 C 函数指针兼容。这意味着您可以将 C++ 函数指针传递给 C 函数,反之亦然。
例如,让我们声明一个 C++ 函数 add
:
int add(int a, int b) { return a + b; }
我们可以将其函数指针传递给一个期望 int (*)(int, int)
类型参数的 C 函数:
void call_c_function(int (*fptr)(int, int)) { int result = fptr(10, 20); printf("Result: %d\n", result); } int main() { call_c_function(&add); return 0; }
实战案例
使用 C 函数指针的一个常见场景是在移植 C 库时。许多 C 库已经编写完成并经过测试,通过使用函数指针,您可以轻松地将它们集成到您的 C++ 程序中。
例如,假设您使用 C 库中定义的函数 print_message
const
atau parameter rujukan atau jenis pemulangan, const
atau pengendali rujukan diperlukan. const int
dan mengembalikan void
: 🎜#include <stdio.h> void (*print_fptr)(const char*); int main() { // 获取 C 库中 print_message 函数的函数指针 print_fptr = &printf; // 调用函数指针以向终端打印消息 print_fptr("Hello, world!\n"); return 0; }
add
:🎜rrreee🎜Kita boleh menghantar penunjuk fungsinya kepada parameter jenis int (*)(int, int)
yang dijangkakan Fungsi C: 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Senario biasa untuk menggunakan penunjuk fungsi C ialah apabila mengalihkan perpustakaan C. Banyak perpustakaan C telah ditulis dan diuji, dan anda boleh mengintegrasikannya dengan mudah ke dalam program C++ anda dengan menggunakan penunjuk fungsi. 🎜🎜Sebagai contoh, katakan anda ingin mencetak mesej ke terminal menggunakan fungsi print_message
yang ditakrifkan dalam pustaka C. Begini cara untuk memanggil fungsi ini daripada program C++ menggunakan penuding fungsi C: 🎜rrreeeAtas ialah kandungan terperinci Penunjuk fungsi C++ dan keserasian C: merapatkan kedua-dua bahasa dengan lancar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!