Вы ничего не делаете неправильно , вам просто нужно сбросить ожидания.
sizeof
соответствует размеру массива в байтах , а не количеству элементов. Вы объявили, что thisArray
имеет 20 элементов типа int
, и хорошая ставка sizeof (int)
в вашей системе - 4. Таким образом, результат sizeof
для этого объекта будет 80.
Есть способ получить количество элементов в массиве:
size_t elements = sizeof myArray / sizeof myArray[0];
То есть вы берете общий размер массива (80 байт) и делите его на размер одного элемента (в данном случае 4). Обратите внимание, что этот прием только будет работать, если операнд первого sizeof
имеет тип array (то есть объявлен как T arr[N]
). Если это тип указатель , это не сработает - вы будете делить размер объекта указателя на размер элемента массива.