タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

styleとarrayに関するmasterqのブックマーク (1)

  • ARR01-C. 配列のサイズを求めるときに sizeof 演算子をポインタに適用しない

    ARR01-C. 配列のサイズを求めるときに sizeof 演算子をポインタに適用しない sizeof 演算子は、オペランドのサイズ(バイト単位)を求める。オペランドは、式または括弧で囲まれた型の名前のいずれかである。sizeof 演算子を使って配列のサイズを計算すると、コーディングエラーとなりやすい。 違反コード 以下の違反コード例では、関数 clear() が配列の要素を 0 で初期化する。この関数は、int array[] として宣言された引数を 1 つ取り、12 個の int からなる静的配列が渡されている。関数 clear() は sizeof(array) / sizeof(array[0]) という構文を使用して配列内の要素数を求めている。しかし、array は引数なので、ポインタ型となる。したがって、sizeof(array) は sizeof(int *) に等しくなる。

    ARR01-C. 配列のサイズを求めるときに sizeof 演算子をポインタに適用しない
    masterq
    masterq 2017/05/20
    "sizeof 演算子を使って配列のサイズを計算すると、コーディングエラーとなりやすい。", "構文 sizeof(array) / sizeof(array[0]) が成立するのは、array の定義が同じスコープ内にある場合である。"
  • 1