宣言と定義

しょっちゅう調べなおしている気がする。
ので覚書。

エキスパートCプログラミング―知られざるCの深層 (Ascii books)

エキスパートCプログラミング―知られざるCの深層 (Ascii books)



■定義 definition

・1回しか記述できない
・オブジェクトの型を指定し、必要な領域を確保する。新規オブジェクトの作成に使う。
・例:int my_array[100];

■宣言 declaration

・何度でも記述できる
・オブジェクトの型を記述する。どこか(たとえば別ファイル)で定義されたオブジェクトを参照する。
・例:extern int my_array[100];
  • 見分け方
    • 宣言は税関の申告のようなもの。それ自体ではない。
    • 定義とはそのオブジェクトの記憶領域を定める、特殊な宣言。
  • externオブジェクトの宣言
    • オブジェクトの名前
    • オブジェクトの型
    • どこか他でオブジェクトのメモリ確保が済んでいるということをオブジェクトに対して伝える
    • この時点では格納するメモリは確保されないので配列のサイズを指定する必要もない。
  • 多次元配列の場合
    • 1番左の添字以外のサイズは指定する必要がある
    • ↑がないとコンパイラは正しいオフセットを計算できない