seclan のほえほえルーム

| |

・プログラミング言語 C の新機能 Part XX: ARR#0:可変長配列: sizeof (1999/08/09 [])
 新しい C 言語で可変長配列が使用できることはわかりましたが、では C 言語の演算子 sizeof や、typedef を可変長配列に対して使用した場合にはどうなるでしょうか。まず始めに sizeof 演算子を適用するとどうなるかを示します。次回に typedef を示します。

sizeof 演算子の適用
size_t getN(int n)
{
  unsigned char buf[n];
  return sizeof(buf);
}
main()
{
  size_t sz;
  sz = getN(1);    //sz == 1
  sz = getN(256);   //sz == 256
  sz = getN(1024);  //sz == 1024
}

 getN 関数に引数 n を渡し、その大きさ分のバッファ buf を宣言します。そしてその大きさを sizeof で関数の戻り値として返します。main 関数では、引数に値を与え、戻り値を sz 変数に入れています。結果は、図からわかるように、引数と同じ値が sz に入ります。つまり、getN で sizeof している大きさは、静的に計算される値ではなく、実行時に動的に取られた値を返すことになります。


by seclan


| |

 

配信

22.26 msec