1. ホーム

typedef void (*Fun) (void) 理解 - 関数ポインタ - typedef 関数ポインタ

2022-02-09 22:36:19

まずはおなじみのtypedefから。

int i;//Define an integer variable i
typedef int myInt.
myInt j;//Define an integer variable j









以上、一般的によく使うtypedefの簡単な使い方を紹介しましたが、次は関数ポインタについて紹介します。

関数ポインタは次のような形式をとります。

<スパン 形式1:戻り値型(*関数名)(引数リスト) 

#include <iostream>

using namespace std;
// Define a function pointer pFUN that points to a function with a return type of char and an integer argument
char (*pFUN)(int);
//define a function with a return type of char and an argument of int
//understand the function at the pointer level, i.e., the function's function name is actually a pointer
// the pointer points to the first address of the function in memory
char glFun(int a)
{
    cout << a;
    //return a;
}

int main()
{
//assign the address of the function glFun to the variable pFun
    pFun = glFun;
//*pFun" obviously takes the content of the address pointed to by pFun, which of course means that the content of the function glFun() is taken out, and then the argument is given as 2.
    (*pFun)(2);
    return 0;
}


私たちは、上記の小さな例によって、関数ポインタの使い方を知っています。

そして 型定義は、関数ポインタをより直感的で便利なものにすることができます。

形式 2: typedef return type (*new type) (パラメータリスト)

typedef char (*PTRFUN)(int); 
PTRFUN pFun; 
char glFun(int a){ return;} 
void main() 
{ 
    pFun = glFun; 
    (*pFun)(2); 
} </span>

 typedefの機能は、新しい型を定義することである。最初の文は PTRFUN という型を定義し、その型を int 型を引数にとり char 型を返す関数へのポインタとして定義しています。後でPTRFUNをint,charと同じように使うことができます。
           2行目のコードでは、変数pFunにこの新しい型を定義して、フォーム1であるかのように使用することができます。