高森太郎の日記。

高森太郎の日記です。

C言語のポインタ

 今日は、その名もそのまんまC言語、という授業があり、そこで、ついにうわさに聞く「ポインタ」というものをやった。ポインタと言うのは、分かりにくくて、そこを理解できるかどうかでC言語の理解度が変わる、とかさんざんあちこちで脅されていたのだが、なんとなく分かった感じ。が、なんか使い方を微妙に間違っとるくさい。
 まだそんなに高度な使い方はしていないとはいえ、普通に変数とカウンタ変数を使えばできそうなことがたくさん。出された問題をクリアしたら、先生に「難しいことやっとるな」などといわれるし……。
 先生の模範解答は明日である。が、今考えたらわかってきたような気がすうる。
 問題はこうだ。101、つまり0から100までの変数配列があり、その中に、今までの変数の添え字の数を、1つづつ足しこめ、というもので、100の配列には5050がはいる。(1+2+3+4+……と言う具合だ)
 で、自分は、目的の変数配列のメモリ上のアドレスから配列のはじめのアドレスを引き、現在のアドレスの添え字の数を出し、その文だけ二重のforループでまわす、というふうにした。確かにこれは難しいよなぁ。
 で、ここで注目すべきは、前の数に、今の変数の添え字の文だけ足したものが、現在のものである、ということだ。つまり、前の変数配列に、今の配列のカウンタを足しこんでやればよい。ということではないか。

 なんか自分、こういうのが多い。着眼点がおかしくて、最後には動くのだが、詰まらんところでは待ったり、非常に効率の悪いことをしたり、;など、必要な文法を飛ばしたり忘れたり。
 まぁ、精進すべし、といったところかなぁ……

 それから、ポインタを利点が良く分からない。たぶんこれがC言語が難しい理由であり、最大の利点でもある、とか言われては、理解したいのだが、とか思っていたらキーワード「C言語」をつたって、らぐなすの本読破日記様の12月17日付けの日記で紹介していた「C言語 ポインタが理解できない理由」という本が気になる。ほしぃ。先生にもうちょっと質問してみて、分からなければ、学校から出る、資格の奨励金で購入してみようかと考える。