なんか考えてることとか

変な人が主にプログラミング関連で考えていることをまとめる。

C

C言語のStrict aliasing rulesについて極力わかりやすく書きたい

C, C++の標準規格に存在するStrict aliasing rules。これについて、プロでもなかなか理解されにくい(現状、自分でも理解できているかどうか怪しい)ので、極力わかりやすく書いていきたいと思う。

直和型を「C言語の共用体に相当する」と説明するのは、もはや誤解を生むだけである

関数型プログラミングを学ぶ際に登場することのある単語として「代数的データ型」というものがあり、直和型はこの代数的データ型の一種である。代数的データ型において、「列挙型はCの列挙体(enum)、直積型はCの構造体(struct)に相当する」という説明に…

なぜC言語のポインタは難しいと言われるのか

2021/09/04 最後に補足を追加 2021/09/05 「補足」項にて、ローカル文字列の注意点を追記 Cを学ぶにあたってよくぶち当たる壁と言われているのがポインタである。なぜポインタは難しいと言われるのか?今回はそもそもポインタとは何なのかを交えてわかりやす…

C言語でオブジェクト指向プログラミング

2021/07/04 載せたコードにミスがあったので修正 「サブクラス」、「スーパークラス」を「派生クラス」、「基底クラス」に統一 2022/08/05 「参照渡し」の誤用があったので修正 前にRustはオブジェクト指向型言語ではないという記事を書いた後で、Twitterで…