p196〜p222まで

配列の配列

配列の配列を初期化する際に、配列のサイズを省略できるのは最初の部分だけ。

int n[][5] = 
{
 // うんたらかんたら
};

構造体

メモリ上に存在している、ある型の変数のことを、その型の「実体(インスタンス)」といいます。
また、構造体は意味のある情報のかたまりなので、構造体変数のことをものに見立てて「オブジェクト」ということもあります。

こ、この説明・・・。わかりやすい・・・!!!
オブジェクトとインスタンスが何なのか、OOP言語を勉強し始めたときはなかなか違いがわからなかったものだが、こう説明されるとわかりやすい。
そういえば、結構本から丸々引用してくること多いけど、この転載って大丈夫なのだろうか・・・。

あ、これは知らなかった。文字列を複数分けて書くとき、

char str1[] = "foo" "bar";
// または
char str2[] = "foo"
              "bar";
// と書くと以下と等価
char str3[] = "foobar";

これも知らなかったなぁ。

struct Hoge hoge; // Cではstructを前につけないとエラー

というのも、Cでは以下のようにtypedefをいつも使ってたので・・・。

typedef struct Hoge
{
  // something...
} Hoge;

列挙体

あっれー。enumって最後の要素の後にカンマつけちゃいかんの?自分の環境じゃコンパイル通らなかったためしがないんだけど・・・。これはちょっと納得いかんなー。コンパイラ依存?みたい。コラムに書いてあった。一応時期C++では許されるようになるみたい。Cではすでに許されている模様。

一応enumもCだと構造体と同じようにenum Hoge hoge;って書かないといけないみたい。

一番初めの値が0に初期化されるのも知らんかったなー。まぁ自分みたいに知らない人がいるだろうからこれからも明示的に0を示していくけど。

デフォルト引数

静的な値を使って実行された関数の戻り値でも使えるらしい。これは知らなかった。

今日はここまで。