Is char *argv[] a 2-dimensional array?
A rookie here, so please bear with me...
I often see that the 2nd argument of main() is a pointer of type char to an array of characters argv[]: char *argv[]. I know that arrays are, in fact, a sequential set of bytes in memory, where the name of an array always points to the base address: &arr[0]. But on the other hand, the char *argv[] notation is quite helpful making it possible to loop through each character of the given string: argv[i][j], meaning it's 2-D per se.
So, my questions are:
1- Since argv[] is an array, it already points to a certain address in memory, i.e. address of the first element of the array, as shown above. Why bother requesting another pointer to a memory location?
2- char *argv[] == char **argv? If yes, why? Can you please point me (no pun intended) to a source where I can learn more about this particular "array notation"?
Thank you!