假设有如下定义:
int a[] = {1, 2, 3, 4, 5};
int b[5] = {2, 3, 4};
那么数组 a 中有几个元素可以用 sizeof() 函数来准确计算:
sizeof(a) / sizeof(int)
但,数组 b 就不能这么计算数组中元素个数,因为数组 b 在定义时就指定了长度为 5 ,虽然只在后面初始化了三个元素,但根据C语言的规则,未显式初始化的数组元素将被设置为0。所以这里的 sizeof(a) 的值为 20 ,最后得出的结果就是包含 5 个元素。这样的话用sizeof() 的方法来计算元素个数就是错的。