Su | Mo | Tu | We | Th | Fr | Sa |
---|---|---|---|---|---|---|
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 |
こんな関数があったとします。
void put_list2(const int pcia[], int in, bool pbfuncfit(int)) {
bool bflag = false;
for (int i = 0; i < in; i++) {
if (pbfuncfit(pcia[i])) {
cout << "★";
}
else {
cout << " ";
}
cout << "a[" << i << "] = " << pcia[i] << "\n";
}
}
問.pbfuncfitって変数名なのに、後ろに(int)って付いてます。どういうことでしょう?
はい!シンキングタイム!
終~了~っ、みじかっ!
答えは、関数ポインタの間接演算子省略をした表記です。外部から呼び出すときの引数には関数名を指定します。実際に呼び出すときは、サンプルのプログラム内のようにしてint型の引数が必要なものです。関数ポインタの引数であるint型の値も外部から受け取り必要なときは、もう一つ、int型の引数を追加するとかして、うけとらないと駄目ね。
pbfuncfit(int)って表記だけど、うけとるのは関数名だけなんだってさ。
わかった人は関数ポインタマスターだね。すごいぜ!忘れてた人は、修行が必要だね。
ちな、自分はわからなかった。修行が必要な人だぜ。
ぱっとみなんのこっちゃわからんパターンってこういうことの積み重ねで生まれるんだわ。気をつけないとな。
再学習し始めたら、わかっていないことだらけ。修行が必要。
9月はプログラミングの季節だね。9月1日だ。