ポインタ、だからscanf()の第2引数にアンパサンドが付くんだ

野澤くんがHさんから借りた『独習C』を又借りして読んでる。
今日、最初からぱらぱら読み始めて、今238ページ。
最初は飛ばし読み気味だったけど、だんだん未知の領域に
突入するにつれ速度が落ち始めて、しまいに止まる。


目次。
1,Cの基礎
2,3,制御文 その1、その2
4,データ型、変数、式の詳細
この辺まではだいたい使ったことがある。


5,配列と文字列
配列はベクトルや行列の計算でよく使った。
文字列はほぼ使ったことが無かったので
いろいろ発見がある。
strcpy(), strcat(), strcmp(), strlen()を使うには
string.hをインクルードすべし。


6,ポインタ
だんだん難関に差し掛かってきた。
でも、今回はイメージがわいてきたぞ。


しかーし、

ポインタを使って多次元配列にアクセスするには、・・・
たとえば、次の配列には各列に5つの要素があります。
float balance[10][5];
したがって、ポインタを使ってbalance[3][1]にアクセスするには、
次のようなコードを使用しなければなりません。
float *p;
p = (float *) balance;
* (p + (3*5) + 1)

ううう、わからん。意味不明だ。
ごめんなさい。配列の添え字指定を使わせてください。


7,関数
引数の値渡しと参照渡し、が重要っぽい。


8,コンソールI/O
gets()とputs()、printf()とscanf()
getchar()とgets()の違いに混乱してきた。


とりあえずここまで目を通した。
使えるようになったとは言えない。
なにより、手を動かしてない。
でも分かった気にはだいぶなった。


この後、
9,ファイル入出力
10,構造体と共用体
11,高度なデータ型と演算子
12,Cのプリプロセッサとその他の高度なトピック
付録A、主要な標準ライブラリ関数
付録B、キーワード
と続く。


ファイル入出力や構造体なんかは知ってた方が
いいはずだと思うんだけど、それはまた今度。
時間取得の関数は調べておかないと。


明日はPerlを習う。あ、宿題がまだだ。


でも着実にできることが増えてる実感がある。
もうすぐ自分でいろいろ作れるようになれば、
なんだってできるようになるような気がする。
いままでの充電を糧に、高邁な理想を胸に。