新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

C言語の関数型のポインタを試してみましたが…

2021-09-07 20:12:08 | C、CPP

 C言語とC++はポインタが最大のポイントですね。両刃の剣みたいなもんで、強力だが分かりづらい。ネットから探して、少しだけ変えて、Pythonの例と同じような感じにしてみました。関数の引数に代入できるか?はやって見てないし、ネットでも見てません。

 ちょっと残念だったのが、VS CodeのC,C++の環境だと、NASでのファイルをコンパイルして実行ファイルは出来るようですが、エラーが起きてデバッグも起動できません。ファイルが見当たらないとエラーが起きます。DドライブにコピーすればDドライブでは出来ます。

 今回手間取ったのが、for(i=0; i++; i<3)とやってしまて、なぜ出力しないか?悩んでました。


コメント (4)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Pythonでtkinterとpygameで同... | トップ | Pythonで関数の引数に、無名... »
最新の画像もっと見る

4 コメント

コメント日が  古い順  |   新しい順
高階関数 (cametan_42)
2021-09-08 09:36:45
> 関数の引数に代入できるか?はやって見てないし、ネットでも見てません。

例えばstdlib.hにあるqsort関数がそのテの関数を引数に取るタイプの関数です(高階関数、と呼びます)。

qsort:
https://www.cc.kyoto-su.ac.jp/~yamada/ap/qsort.html
返信する
cametan_42さん、コメントありがとうございます (isam)
2021-09-09 08:25:25
 高階関数という言葉は、改めて見てみると、一度はやってますが、理解が半端でした。長澤さんのKotlinでもありましたし、Kop本でもありました。
 関数の引数として、関数を使うのが、高階関数という、事のようです。確かに、関数が2階建てに成っている感じがします。但し、2階建ての部分が関数直接でなくて、関数の変数ですか?
 未だ理解が足りないかもしれません。それと例を見つけたネットにも先があって、その先に高階関数の例がありました。
返信する
高階関数 (cametan_42)
2021-09-09 14:36:45
> 関数の引数として、関数を使うのが、高階関数という、事のようです。

その通り、ですね。

実は高階関数には二種類あって、

1. 関数を引数に取る関数
2. 返り値が関数である関数

と言う二つの事柄を指します。

まぁ、基本的には「関数がファーストクラスオブジェクト」である言語用の概念で、そういう意味で言うとC言語は関数がファーストクラスオブジェクトではないので、厳密には違うかもしれませんがね。
Cの場合は「関数ポインタを引数に取る関数」になっちゃいますし、「関数ポインタを返す関数」ってのが実質的に意味があるのかどうか、ってのはちと疑わしいトコではあります。
(CはPythonと違って、ローカル関数が書けないので、あまり意味は無くなっちゃうとは思います)
返信する
cametan_42さん、コメントありがとうございます (isam)
2021-09-09 20:09:07
本では得られない、幅広く、俯瞰したコメントありがとうございます。
返信する

C、CPP」カテゴリの最新記事