sizeof
возвращает объем памяти того, что вы передаете.Возвращаемое значение равно ...
, измеренному в количестве единиц хранения размера символов, необходимых для типа
В типичной 32-разрядной системе a char
- это один байт, а int
- это четыре байта, поэтому вы получите кратное четыре для массива типа int
.
Если вам нужна длина массив, просто поделите на размер типа:
int a[3];
size_t n = sizeof(a) / sizeof(a[0]);
Примечание: как dbush упоминается в комментариях ниже:
... это работает, только если массив не является параметром для функции.В этом случае массив превращается в указатель, а sizeof (массив) - в размер указателя.