二维数组就是这么定义的,你可以进一步看一下二维数组的动态分配,char (*p)[20] = (char(*)[20])malloc(sizeof(5*20*sizeof(char));这里的p是首地址,加1相当于地址加20,这里存的是p[1][20]的地址,而p+i的地址也是p[1][20]的首地址,所以是一样的。
int main()
{
char str[][10] = {"11","22","33","44","55"};
char (*p)[10] = str;
for (int i = 0;i < 5;i ++)
{
printf("%s ",*(p + i));
}
return 0;
}