My Questions:
1) Why does the function sizeof() return a higher byte value when evaluating nElementIndex rather than nElementIndex [ARRAY_LENGTH] ?

2) If you remove the keyword const when declaring the integer variable, the program is unable to compile. Why is this?
(I understand it would be completely redundant doing so, but still.)
Code:
#include <iostream>
using namespace std;

int main()
{
    const int ARRAY_LENGTH = 10;
    int nElementIndex [ARRAY_LENGTH] = {0};
    
    cout << sizeof(nElementIndex) << endl;
    cout << sizeof(nElementIndex [ARRAY_LENGTH]) << endl;
    
    return 0;
}
The only logical sense I can extract is that int consumes 4 bytes of memory, of which, since the number of elements is initialized to 10, the microprocessor stores into 10 addresses. Thus, validating the result of "40" from the program. But that's where things become confusing. I would of thought "40" would of been the result of sizeof(nElementIndex [ARRAY_LENGTH]). ???