Pin-Jiun / Programming-Language-CPP

It's the note/experience about C++, and I have the basic ability of C.
0 stars 0 forks source link

8.2-Function Pointer #11

Open Pin-Jiun opened 1 year ago

Pin-Jiun commented 1 year ago

Function Pointer

int getNumber(){
    return 5;
}
int main()
{
    cout<<getNumber()<<endl;
    cout<<getNumber<<endl; //print Function Address
    return 0;
}

getNumber就是所謂的function pointer,會指向進入function的位置

建立Function Pointer

回傳型態 (*func_ptr)(參數型態) = fun 例如

#include <iostream>
using namespace std;

int func(char a) {
 return int(a);
}

int main()
{
    int (*func_ptr)(char) = func; // make function pointer to point func
    return 0;
}

建立function pointer並呼叫funcPtr(參數1,參數2...)


#include <iostream>
using namespace std;

int func(char a, char b) {
 return int(a)-int(b);
}

int main()
{
    int (*funcPtr)(char, char) = func; // make function pointer to point func
    cout << func('A','a') <<endl; //-32
    cout << funcPtr('a','A') <<endl; //32
    return 0;
}

Function Pointer存在的目的

要將function當作參數,傳入另一個function時會用到此 假設有一個客戶隨時要取用3次方或2次方,為了個別function建立function會造成程式碼的浪費

#include <iostream>
#include <string>
using namespace std;

int power2(int n)
{
  return n * n;
}

int power3(int n)
{
  return n*n*n;
}
//將function當作參數傳入,隨時置換使用的function
void customFunction(string Name, int(*powerF)(int)){
    int a = 6;
    cout << Name << " , the number is " << powerF(a) << endl;
}

int main(){
    int(*FuncPtr)(int) = power2;
    customFunction("Bob",FuncPtr);
}