「配列の要素数を調べる」の版間の差分
提供: 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
関連項目
- 配列の初期化
- 配列の要素数を調べる
- 配列の初期化 指示付きの初期化指定子