Paano Gumamit ng Mga Function Pointer sa C++

Paano Gumamit Ng Mga Function Pointer Sa C



Sa C++, function pointer nag-aalok ng isang makapangyarihang tool para sa pagmamanipula ng mga function bilang data. A function pointer ay isang variable na nagtataglay ng memory address ng isang function. Ito ay gumagana nang katulad sa isang karaniwang pointer maliban na ito ay nagse-save ng address ng isang function sa halip na ang address ng isang data object. Mahalagang tandaan iyon function pointer ay isa pang uri ng variable sa C++, at dahil dito, dapat silang ideklara at sinimulan nang katulad sa iba pang mga variable.

Pagtukoy sa isang Function Pointer

Ang syntax upang ipahayag ang a function pointer ay ang mga sumusunod:







return_type ( * func_ptr_name ) ( parameter_list ) ;



dito, func_ptr_name ay ang pangalan ng function pointer , return_type ay ang uri ng pagbabalik ng function, at parameter_list ay ang listahan ng mga parameter na kinukuha ng function.



Narito ang isang halimbawa ng code para gumamit ng function pointer sa C++.





#include
#include
gamit ang namespace std;

walang laman na kubo ( int x )
{
cout << 'Ang cube ng isang numero ay' << x * x * x << endl;
}

int pangunahing ( )
{
walang bisa ( * masayaPtr ) ( int ) ;
funPtr = at kubo;
masayaPtr ( 5 ) ;
bumalik 0 ;
}

Sa code sa itaas, ang function pointer ay idineklara bilang walang bisa (*funPtr)(int) , at ito ay sinisimulan sa pamamagitan ng pag-iimbak ng address ng cube() function sa masayaPtr , ibig sabihin masayaPtr tumuturo sa function kubo () . Kaya, maaari nating tawagan ang cube function gamit ang funPtr ( function pointer ) tulad ng sa code funPtr (5).



Output

A function pointer , sa kaibahan sa iba pang mga pointer, tumuturo sa code kaysa sa data. A function pointer madalas na nag-iimbak ng simula ng executable code. Hindi tulad ng mga karaniwang pointer, hindi namin ginagamit function pointer para maglaan o magbakante ng memorya. Gaya ng nakita natin sa programa sa itaas, posible ring gamitin ang pangalan ng isang function upang matukoy ang lokasyon nito. Ang parehong mga panuntunan na nalalapat sa mga normal na pointer ay nalalapat din sa isang hanay ng function pointer . Ang paggamit ng mga function pointer ay maaaring gamitin bilang kapalit ng switch case. A function pointer ay maaaring ibigay bilang isang argumento at ibalik mula sa isang function, tulad ng isang data pointer.

Mga Bentahe ng Function Pointer

Ang mga pangunahing benepisyo ng function pointer ay nakalista sa ibaba.

1: Reusability ng Code

Isa sa mga pangunahing bentahe ng paggamit function pointer ay pinapayagan nila ang muling paggamit sa code. Sa halip na magsulat ng mga natatanging function para sa bawat sitwasyon, maaari kang magdisenyo ng mga function na sapat na pangkalahatan upang harapin ang iba't ibang uri ng input data sa pamamagitan ng pagtukoy ng isang function pointer i-type at patuloy itong gamitin sa kabuuan ng iyong code. Sa halip, ang kailangan mo lang gawin ay ibigay ang tama function pointer sa runtime o sa pamamagitan ng isang configuration file, at ang function ay aayusin sa mga pangangailangan ng kasalukuyang trabaho. Hindi lamang nito pinapabilis ang proseso ng pag-unlad ngunit pinapabuti din nito ang modularity ng iyong code at pangmatagalang pagpapanatili.

2: Dynamic na Pag-uugali sa Runtime

Ang kakayahang magpatupad ng dynamic na pag-uugali ng runtime ay isa pang benepisyo ng paggamit function pointer . Halimbawa, maaaring mayroon kang function na nagsasagawa ng isang partikular na kalkulasyon, ngunit ang eksaktong algorithm na ginamit upang maisagawa ang pag-compute na iyon ay depende sa input ng user o mga kundisyon ng system. Sa pamamagitan ng pag-iimbak ng a function pointer na tumutugma sa bawat posibleng algorithm, maaari mong piliin ang naaangkop sa runtime gamit ang if-else na mga pahayag o iba pang conditional logic. Sa paggawa nito, maaari kang bumuo ng napaka-flexible na code na maaaring tumugon sa pagbabago ng mga kundisyon nang hindi nangangailangan ng isang buong programang muling itayo.

3: Kakayahang umangkop

Sa C++, function pointer nag-aalok ng mabisang tool para sa paglikha ng nababaluktot, generic na code. Mga payo ng function ay mahalagang mga variable na nagtataglay ng address ng lokasyon ng memorya ng isang function. Binibigyang-daan ng mga ito ang mga function na maimbak sa mga istruktura ng data tulad ng mga array o listahan, na ibinibigay bilang mga argumento sa iba pang mga function, at kahit na ginagamit upang dynamic na piliin ang tamang function na isasagawa batay sa runtime circumstances o user input.

Konklusyon

Mga payo ng function sa C++ ay epektibo na sumusuporta sa dynamic na pag-uugali ng runtime at muling paggamit ng code. Maaari kang sumulat ng napaka-flexible at adaptive na code na maaaring umangkop sa pagbabago ng mga kinakailangan sa paglipas ng panahon sa pamamagitan ng pag-iimbak ng mga address ng mga function sa mga variable. Mga payo ng function ay kinakailangan para sa bawat propesyonal na C++ coder, sa kabila ng katotohanan na maaaring mangailangan sila ng ilang trabaho upang matuto.