sizeof
дает вам размер в байтах, 8 байтов звучат правильно для 2 целых чисел (32-бит или 4 байта каждое).
Если вы хотите, чтобы длина из массива, вы можете сделать sizeof(arr) / sizeof(arr[0])
, который даст вам размер всего массива, деленный на размер каждого элемента.В этом случае вы получите 8 / 4 == 2
, что, как я понимаю, вы ожидаете.
EDIT Чтобы ответить на ваш второй вопрос, когда вы передаете массив методу, выфактически передавая указатель в массив.Следовательно, размер указателя также составляет 32 бита или 4 байта.Если вы хотите, чтобы функция знала длину массива, вам нужно также передать ее длину вместе с указанным указателем.