基础有关问题,为什么这样写是错的

基础问题,为什么这样写是错的?
为什么这样写是错的?应该怎样写?谢谢。


int TestArgv(char **p)
{
char *psz = p[0];
printf(psz);

return 0;
}

int main()
{
char argv[][100] = {"test", "123"};
TestArgv((char**)argv);

return 0;
}

------解决方案--------------------
TestArgv(char (*p)[100]) 
------解决方案--------------------
类型不匹配,把char argv[][100] = {"test", "123"}; 改成:
char * argv[] = {"test", "123"};
------解决方案--------------------
先要弄清楚指针与数组的区别。