「配列の要素数を調べる」の版間の差分

提供: C言語入門
移動: 案内検索
(ページの作成:「「配列の要素数」を知るには、sizeofを使用します。 '''読み方''' ;配列の要素数:はいれつ の ようそすう __TOC__ == 概要 == 配列...」)
 
(相違点なし)

2014年3月31日 (月) 16:15時点における最新版

「配列の要素数」を知るには、sizeofを使用します。

読み方

配列の要素数
はいれつ の ようそすう

概要

配列の要素数を知るのは、以下の計算を行います。

配列のサイズ ÷ 配列の型のサイズ

配列のサイズというのは、メモリを専有しているサイズのことです。 以下のコードは、 int 型が3つであるため、int型が4byteだとすれば、全体で12byteになります。

int a[3] = {
	1,
	2,
	3
};

配列aのサイズは、以下のコードでわかります。

sizeof(a);

intのサイズは、以下のコードです。

sizeof(int);

よって、配列aの要素数は、以下のコードになります。

int size = sizeof(a) / sizeof(int);

配列の要素数を直接知る方法はありません。 分かるのは、

  • 「配列のサイズ」
  • 配列の型のサイズ

だけです。

関数の引数に配列のポインタを渡した時、呼び出された関数では、配列の正しい要素数を知るすべはありません。

  • 関数の引数に「要素数」を渡す
  • 配列がNULLターミネートなどの終端が設定されている前提でプログラムを書く

といった配慮が必要になります。

array_size1.c の例

ソースコード array_size1.c

/*
 * init_array.c
 * Copyright (C) 2014 kaoru <kaoru@bsd>
 */
#include <stdio.h>
#include <stdlib.h>
 
int
main(int argc, char *argv[])
{
        int a[3] = {
                1,
                2,
                3
        };
        (void)printf("%lu\n", sizeof(a) );	// 配列のサイズ
        (void)printf("%lu\n", ( sizeof(a) / sizeof(int) ) );	// 配列の要素数
        exit(EXIT_SUCCESS);
}

コンパイル

cc  array_size1.c -o array_size1

実行例

配列は、3つであるため、3と表示されています。

% ./array_size1
12
3

関連項目

  1. 配列の初期化
  2. 配列の要素数を調べる
  3. 配列の初期化 指示付きの初期化指定子