Wiki がページ「関数ポインタ」を「C言語の基礎 - 関数ポインタ」に、リダイレクトを残さずに移動しました
文字列「</source>」を「</syntaxhighlight>」に置換
 
(同じ利用者による、間の1版が非表示)
11行目: 11行目:
型 (*変数名)(仮引数)<br>
型 (*変数名)(仮引数)<br>
<br>
<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  #include <stdio.h>
  #include <stdio.h>
   
   
42行目: 42行目:
     return (x - y);
     return (x - y);
  }
  }
  </source>
  </syntaxhighlight>
1度目の関数呼び出し時は、pFuncに関数additionのアドレスが格納されており、<br>
1度目の関数呼び出し時は、pFuncに関数additionのアドレスが格納されており、<br>
2度目の関数呼び出し時は、関数subtractionのアドレスが格納される。<br>
2度目の関数呼び出し時は、関数subtractionのアドレスが格納される。<br>
50行目: 50行目:
<br>
<br>
ちなみに、以下のように宣言して配列として使うこともできる。<br>
ちなみに、以下のように宣言して配列として使うこともできる。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  int main(int argc, char *argv[])
  int main(int argc, char *argv[])
  {
  {
64行目: 64行目:
     return 0;
     return 0;
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


== コールバック関数を使用する ==
== コールバック関数を使用する ==
下記のように、コールバック関数として使用することができる。<br>
下記のように、コールバック関数として使用することができる。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  #include<stdio.h>
  #include<stdio.h>
   
   
107行目: 107行目:
     pFunc(s);
     pFunc(s);
  }
  }
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


== typedefを使用する(C++11以降) ==
== typedefを使用する(C++11以降) ==
C++11以降の場合、typedefを使用することを推奨する。<br>
C++11以降の場合、typedefを使用することを推奨する。<br>
  <source lang="c++">
  <syntaxhighlight lang="c++">
  // C++98, C++03の記述
  // C++98, C++03の記述
  typedef void (*pfunc)(int, char);
  typedef void (*pfunc)(int, char);
118行目: 118行目:
  // C++11以降の記述
  // C++11以降の記述
  using pfunc = void (*)(int, char);
  using pfunc = void (*)(int, char);
  </source>
  </syntaxhighlight>
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:C]]
[[カテゴリ:C]]