These are two kinds of declaration for an array of integers:
Code:
int x[10]; /* allocated at compile time, each position has the size of an int */
int *x; /* it's the same with the difference that the memory allocated at compile time is just for a pointer,
you will need to allocate it dinamically with malloc */
while these are a bit different
Code:
int *x[10] /* at compile time, sizeof(int*)*10 is allocated, thus is an array of pointers to integers */
int **x; /* as above with tthe difference that the memory allocated at compile time is just for a pointer
you will need to allocate it dinamically */
the advantage of allocate arrays dinamically is that you can manage their size at run time.
hope that help.