
No.4ベストアンサー
- 回答日時:
#2です。
こっちの方がいいかも。
#include <stdio.h>
typedef int (*FUNC)(int, int);
int f0(int a, int b)
{
return a + b;
}
int f1(int a, int b)
{
return a * b;
}
FUNC func(int n)
{
FUNC f[] = { f0, f1 };
return f[n];
}
int main(void)
{
printf("%d\n", func(0)(10, 20));
printf("%d\n", func(1)(10, 20));
return 0;
}
分かりやすいプログラムで回答していただいてありがとうございます.
FUNC f[]のように配列も作れるとは驚きました.
大変勉強になりました.
No.3
- 回答日時:
typedefしましょう。
f()は、g1()またはg2()のアドレスを返します。int g1(int x) { return x+1; }
int g2(int x) { return x-1; }
typedef int (*FUNCP)(int);
FUNCP f(int y) {
if (y == 1) {
return g1;
} else {
return g2;
}
}
int a1 = (f(1))(5);
int a2 = (f(2))(5);
回答ありがとうございます.
なるほどtypedefで関数のポインタの型を作ったわけですね.
早速実験してみたところ,エラー無く動作しました.
No.2
- 回答日時:
こんなことがしたいのでしょうか。
#include <stdio.h>
typedef void (*FUNC)(int, int);
void f0(int a, int b)
{
printf("f0() was called.\n");
printf("%d+%d=%d\n\n", a, b, a + b);
}
void f1(int a, int b)
{
printf("f1() was called.\n");
printf("%d*%d=%d\n\n", a, b, a * b);
}
FUNC func(int n)
{
FUNC f[] = { f0, f1 };
return f[n];
}
int main(void)
{
int i, a = 10, b = 20;
for (i = 0; i < 2; i++) {
(*func(i))(a, b);
}
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「指定されたキャストは有効で...
-
複数桁10進数の*桁目だけを抽出...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
小さい順に並べ替えるプログラム
-
(int *)の意味
-
windows-findstrの正規表現を使...
-
C言語 エラーの原因がわからな...
-
return 1L
-
int型の変数値をバイト列として...
-
【C++】関数ポインタの使い方
-
if と配列の組み合わせ
-
既に定義されている関数のプロ...
-
CStringの配列要素を関数で受け...
-
C言語です
-
入力された2つの整数の差を絶対...
-
fprintfでの文字化け
-
C言語 べき乗
-
C#のコンパイルエラーCS0120に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
int型の変数値をバイト列として...
-
std::set<int> で、ある値が何...
-
PowerShellがうまくいかない
-
(int *)の意味
-
CStringの配列要素を関数で受け...
-
ColorをRGBで指定する方法
-
「{ } で囲むだけ」は正しい?
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
read関数をノンブロッキングで...
-
(マルチスレッド)_beginthrea...
-
int16_t の _t は何?
おすすめ情報