Aren't arrays zero indexed?

So I know that arrays are zero indexed when referring to them in the code after initialization but why aren't they when you initialize them.

I would think that this would work:
int myArray[7] = {1,0,1,0,1,0,1,0};

But it doesn't, I know that you have to use myArray[8] instead but I'm just wondering why this is. It seems to be a bit confusing to switch between being zero indexed and not

"int myArray[7]" isn't an index. It is telling the complier how big "myArray" should be. You tell the complier to make "myArray" 7 elements, then you give it 8.

Ok thanks that makes sense. Thanks