配列の要素数を直接知る方法はありません。 分かるのは、 「配列のサイズ」 配列の型のサイズ だけです。 関数の引数に配列のポインタを渡した時、呼び出された関数では、配列の正しい要素数を知るすべはありません。 関数の引数に「要素数」を渡す 配列が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)