いちばんやさしいゲームの作り方

文系の人でも、数理学がわからない人でもゲームプログラミングをマスターできるブログ

ポインタ変数を何も指していない状態にするためには null 値を設定します。

ポインタ変数に null 値を設定するためには数値の0を代入します。このようにして作った null 値を指しているポインタを null ポインタと呼びます。

int *pointer = 0;

ひとつ注意点があります。ポインタ変数は0を代入することで「何も指していないポインタ」、つまり null ポインタにすることができますが、 null ポインタの値が0とは限りません。つまり、次のようなコードは正しく動作しない可能性があります。

struct SomeStruct
{
  int *pointerA;
  int *pointerB;
  int *pointerC;
};

int main(int argc, char *argv[])
{
  struct SomeStruct sample;

  // 0 で初期化を試みる…
  // しかし null ポインタの値が 0 とは限らない!
  memset(&sample, 0, sizeof(SomeStruct));

  return 0;
}

Windows など、たいていの環境では正しく動作すると思いますが、一応 null ポインタの値が 0xABCDEF というような意味のわからない値でも良いことになっています。しかし、そのような環境でも null ポインタを作るためには0を代入する必要があるため注意が必要です。

しかし、たいていの方は0という数値の代わりに NULL 定数を使います。理由はその方が読みやすいからです。また、ほかの言語では null 値を意味するキーワードが存在するため、言語としてのスタイルをあわせておくという事情もあります。

int *pointer = NULL;

ちなみに次期 C++ 言語である C++0x では nullptr というキーワードの導入が検討されており、 NULL に変わる指定ができるようになる可能性があります。

Contributions




Trackback URL

メルマガ登録・解除
 
挫折不可能!初級ゲームプログラミング完全マニュアル
RSS track feedいちばんやさしいゲームの作り方 カウンター
ブログSEO対策:track word あわせて読みたい SEO STATUS