ポインタ制覇本とても面白い内容でした。Javaに対する不満が節々に表れていて少しくどいような気もしました。面白かったからそれはそれで良いと思いますが。勉強になったのが2章と3章あたり。5-2-4連結リストは得てして同じような実装を量産する。そこで実際に持つべきデータをvoidポインタにしておくことで何でも格納可能な連結リストを実現できる。scanfを使うと、マッチしなかったデータが入力ストリームの残ってしまうので次のscanf等の呼び出しでおかしくなってしまう可能性がある。4-2-1realloc関数で必要な分をその都度確保していたらフラグメンテーション化の恐れがあるので、一般的にはreallocで一時変数を確保&拡張し使いまわすというのが正しいやり方のようです。5-2-4あまりにもサイズの違うデータを共用体で宣言する場合は共用体のポインタを使うほうが良い。mallocによるメモリ確保と、freeしなければならないというデメリットもある。このあたりは凄く有用ですね。mallocを使うことで小さな空きブロックが溜まっていくのでメモリ効率が悪くなる。よけいなキャストは書かないほうが、すっきりして読みやすいと思えるのですが。(中略)malloc()の戻り値をキャストするのはもうやめましょう。CはC++じゃないんですから。Ritchieが開発したLimboという言語があるらしい。機会があれば調べてみよう。ここの説明は凄くいいですね。スタック構造で実行されているという部分も図解入りで凄くわかりやすかったです。可変長引数の関数では、プロトタイプ宣言による引数の型チェックがききません。呼び出された側では、呼び出し側が正しく引数を渡していると全面的に信用して動くことしかできません。1-3-6通常、配列は関数にそのまま渡すことはできません。関数に渡した時点でポインタ型でしか受け取れないからです。構造体を経由すれば可能であるということ。実際にうまくいくか試してみます。1-3-4例えばループの中で何度もp[i]、つまり*(p+i)と書いてデータを参照するよりも、ループの初期化等でp++しておいたらループの中では*pで参照できるので効率が良い。いうのは古の効率化手法らしい。1-2-1ポインタという変数、という考え方ではなくて「ポインタ型の変数」と考えろってことか。確かにその辺混同するとわけがわからないことになるかもね。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。