I/O 厄介

先日のプログラムのバグ取りに追われた。ポインタと配列を一緒くたに考えるとバグの元なんですかね・・・ 恐らくはポインタの指し示すアドレスが動的に変化することが混乱のもとなのやら。
int *a; a=(int *)calloc(SIZE,sizeof(int)); における a と &a[0] って、必ずしも一致しないんだよな。いっそ全てのアドレスを指定してやった方が、自分には分かりやすいんだがzzz
あと、 int a[SIZE]; みたいに宣言すると、必ずしもメモリ上で &a[X] と &a[X+1] は連番になってくれないのかね・・・ ちょっとよく分からんけど、何か保証はされていない気がする。
とか色々考えながらデバッグをしていたら、配列の添え字の i と j を混合していたりorz 添え字も分かりやすい単語にしないと駄目ですな・・・ 結局動くようにはなったけれど、何が決め手となって動くようになったのやら。
他にも弄くっていない変数の値が特定の箇所で改竄されたこともzzz これもメモリ管理のミスによるものかね。それならそれで直すまでなんだけれど、そうでないとしたら非常に萎える。まあ、処理方法を変えて改竄が起こらないようにしたので、原因の探求はしませんでしたが。色々便利な関数が容易されているものと、実際に物を作って実感。リファレンスさえあればやりたい放題だな。