Arrays and pointers are different things. A pointer can be used to access an element in the array. To be able to initialize an array, you need to declare an array, not a pointer.
To show clearly the difference try this:
int[] ia = {1, 2, 3, 4, 5, 6, 7, 8};
int* ip = ia;
printf("sizeof(ia): %zu, sizeof(ip): %zu", sizeof(ia), sizeof(ip));
The first should print the size of the array, the second the size of an int pointer.
The odd thing with C is that when an array is passed as a parameter to a function it decays into a pointer. See more in section 2.3 of http://www.lysator.liu.se/c/c-faq/c-2.html. The reason main accepts argv**
instead of argv*[]
is that argv*[]
is decayed into argv**
when passed as a function parameter.