📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == ポインタの参照先を関数にすると、そのポインタが指し示す関数を呼び出すことができる。<br> ポインタに格納する…」 |
細 文字列「</source>」を「</syntaxhighlight>」に置換 |
||
| (同じ利用者による、間の4版が非表示) | |||
| 11行目: | 11行目: | ||
型 (*変数名)(仮引数)<br> | 型 (*変数名)(仮引数)<br> | ||
<br> | <br> | ||
< | <syntaxhighlight lang="c++"> | ||
#include <stdio.h> | #include <stdio.h> | ||
| 42行目: | 42行目: | ||
return (x - y); | return (x - y); | ||
} | } | ||
</ | </syntaxhighlight> | ||
1度目の関数呼び出し時は、pFuncに関数additionのアドレスが格納されており、<br> | 1度目の関数呼び出し時は、pFuncに関数additionのアドレスが格納されており、<br> | ||
2度目の関数呼び出し時は、関数subtractionのアドレスが格納される。<br> | 2度目の関数呼び出し時は、関数subtractionのアドレスが格納される。<br> | ||
| 49行目: | 49行目: | ||
関数ポインタの仮引数は、仮引数の型だけを入れて宣言すればよい。<br> | 関数ポインタの仮引数は、仮引数の型だけを入れて宣言すればよい。<br> | ||
<br> | <br> | ||
ちなみに、以下のように宣言して配列として使うこともできる。<br> | |||
< | <syntaxhighlight lang="c++"> | ||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||
{ | { | ||
| 64行目: | 64行目: | ||
return 0; | return 0; | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
== コールバック関数を使用する == | == コールバック関数を使用する == | ||
下記のように、コールバック関数として使用することができる。<br> | 下記のように、コールバック関数として使用することができる。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
#include<stdio.h> | #include<stdio.h> | ||
| 107行目: | 107行目: | ||
pFunc(s); | pFunc(s); | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br><br> | |||
== typedefを使用する(C++11以降) == | |||
C++11以降の場合、typedefを使用することを推奨する。<br> | |||
<syntaxhighlight lang="c++"> | |||
// C++98, C++03の記述 | |||
typedef void (*pfunc)(int, char); | |||
// C++11以降の記述 | |||
using pfunc = void (*)(int, char); | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:C]] | [[カテゴリ:C]] | ||