关于char *p和char *p[]有关问题的疑惑

关于char **p和char *p[]问题的疑惑
通过程序验证,char **p 和char *p[] 含义不同。但是,为什么main函数中的参数main(int argc, char *argv[]) 和main(int argc, char **argv) 都可以用?
------解决思路----------------------
数组用作函数参数的时候,退化为指针。
int *p 和 int p[] 也是含义不同,但是,如果作为函数的参数,f(int p[])就等价于f(int *p),在函数f里面p就是个指针。