カレンダー
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
最新記事
(01/30)
(01/18)
(12/16)
(12/12)
(11/25)
(11/25)
(11/24)
(11/24)
(11/22)
(11/17)
最新コメント
[12/25 日没]
[11/15 無色大師]
[11/12 無色大師]
[11/11 無色大師]
[11/08 無色大師]
リンク
新刊カレンダー
ブログ内検索
プロフィール
HN:
Nina.A
性別:
男性
趣味:
麻雀、ラノベ、漫画
自己紹介:
MJ4や天鳳等でよく麻雀やってます。もし会ったらよろしくです。
ブログは単なるメモ帳となる予定。
ブログは単なるメモ帳となる予定。
カウンタ
C/C++勉強中の大学生雑記
2025/01/31
06:08:52
2008/11/09
15:32:31
関数ポインタを使う必要が出てきた。OpenCVのcvSetMouseCallback関数とかで存在自体は知ってたけど、使うのは初めてなのでメモっておく。
参考:C++言語解説
以下に簡単な関数ポインタのプログラム例を挙げておく。
#include <iostream> void func1(void){ std::cout << "func1\n"; } void func2(void){ std::cout << "func2\n"; } int main(void){ int i; void (*func)(void); while(1){ std::cout << "1:func1 2:func2 0:quit\n"; std::cin >> i; switch(i){ case 1: func = &func1; break; case 2: func = func2; break; default: goto LOOP_EXIT; } func(); } LOOP_EXIT: return 0; }
これを見ると分かるように関数ポインタの宣言は、
void (* func )( void ); 【関数の戻り値】 (*【変数名】)(【関数の引数】);という形になる。
関数アドレスの取得は、
&func1 &【関数名】または単に、
func2 【関数名】で取得可能。
関数ポインタを介した関数の実行は、
(* func )( ); (*【関数ポインタ】)(【引数】);で実行可能。また、普通の関数のように、
func ( ); 【関数ポインタ】(【引数】);としても実行できる。
PR
この記事にコメントする