C言語とC++はポインタが最大のポイントですね。両刃の剣みたいなもんで、強力だが分かりづらい。ネットから探して、少しだけ変えて、Pythonの例と同じような感じにしてみました。関数の引数に代入できるか?はやって見てないし、ネットでも見てません。
ちょっと残念だったのが、VS CodeのC,C++の環境だと、NASでのファイルをコンパイルして実行ファイルは出来るようですが、エラーが起きてデバッグも起動できません。ファイルが見当たらないとエラーが起きます。DドライブにコピーすればDドライブでは出来ます。
今回手間取ったのが、for(i=0; i++; i<3)とやってしまて、なぜ出力しないか?悩んでました。
例えばstdlib.hにあるqsort関数がそのテの関数を引数に取るタイプの関数です(高階関数、と呼びます)。
qsort:
https://www.cc.kyoto-su.ac.jp/~yamada/ap/qsort.html
関数の引数として、関数を使うのが、高階関数という、事のようです。確かに、関数が2階建てに成っている感じがします。但し、2階建ての部分が関数直接でなくて、関数の変数ですか?
未だ理解が足りないかもしれません。それと例を見つけたネットにも先があって、その先に高階関数の例がありました。
その通り、ですね。
実は高階関数には二種類あって、
1. 関数を引数に取る関数
2. 返り値が関数である関数
と言う二つの事柄を指します。
まぁ、基本的には「関数がファーストクラスオブジェクト」である言語用の概念で、そういう意味で言うとC言語は関数がファーストクラスオブジェクトではないので、厳密には違うかもしれませんがね。
Cの場合は「関数ポインタを引数に取る関数」になっちゃいますし、「関数ポインタを返す関数」ってのが実質的に意味があるのかどうか、ってのはちと疑わしいトコではあります。
(CはPythonと違って、ローカル関数が書けないので、あまり意味は無くなっちゃうとは思います)