カレンダー				
				| 10 | 2025/11 | 12 | 
| 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 | 
					最新記事				
				(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/11/04
 13:29:35
			
			
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
					この記事にコメントする
				
							
	