Если это не VLA , размер массива является постоянной времени компиляции, поэтому не имеет значения, сколько памяти вы на самом деле используете , он будет занимать объем памяти такой же, как размер массива, указанный во время определения.
Другими словами, массив, определенный как
int arr[20] = {0};
собирается занять память размером 20 int
элементов, то есть размер массива будет int [20]
.
Вы можете проверить размер, занятый запуском
int arr[20] = {0};
printf ("size of the array: %zu", sizeof (arr));