int test1(int a,int b){
return a+b;
}
ใน main
------------------------------
int (*func_test)(int,int); // ประกาศตัวชี้ฟังก์ชัน
func_test=test1; //ให้ตัวชี้ไปชี้ที่หน่วยความจำที่เก็บฟังก์ชันนั้นหรือ func_test=&test1
cout<<(*func_test)(10,20); //เรีัยกใช้ ฟังก์ชันผ่าน ตัวชี้
ซึ่งการทำเช่นนี้จะช่วยให้่เราสามารถส่งผ่านฟังก์ชันไปเป็นพารามิเตอร์ให้กับฟังก์ชันโดยใช้ตัวชี้ได้
ตัวอย่างเช่น
int test(int a , intb){
return a+b;
}
int dosomething( int (*func_test)(int,int) , int a,int b){
return (*func_test)(a,b);
}
cout<
สิ่งที่น่าสนใจคือการส่ง test ผ่าน ฟังก์ชัน dosomething() เนื่องจากเมื่อโปรแกรมถูกเรียกให้ทำงาน ระบบปฏิบัติการจะมีการจัดสรรหน่วยความจำให้กับตัวแปร ,ฟังก์ชัน ,object, ... ดังนั้น ถ้าเราประกา่ศ function test ก็จะมีการจองหน่วยความจำให้กับฟังก์ชัน test ดังนั้น
ถ้าจะให้ไม่งงก็สามารถเรียกแบบนี้ก็ได้
cout<
โดยปกติแล้ว การเรียกใช้งานฟังก์ชันจะถูกเรียกใช้ในตอน คอมไพล์ไทม์ ซึ่งเป็นการกำหนด ว่าฟังก์ชันนี้ถูกเรียกใช้ตอนใด อย่างตายตัว ซึ่งใน c++สามารถเรียกใช้ฟังก์ชันในขณะรันไทม์ได้ ซึ่งเรียกว่า callback function
ไม่มีความคิดเห็น:
แสดงความคิดเห็น