场景一:
//问题:对数组取地址,是否能应用于二级指针传递
void test(int** p)
{
}
void main()
{
int arr[]={10,20,30,40};
test(&arr);
}
//上述应用错误
//原因:类型不一致。对数组名取地址&arr,它的类型并不是指向指针的指针
//修改
void test(int (*p)[4])
{
}
场景二:
问题:二维数组 == 二维指针? 不等于
void test(int** p)
{
}
void main()
{
int arr[2][3]={10,20,30,40};
test(arr);
}
//修改
void test(int (*p)[3])
{
}
void test(int p[][3])
{
}
void test(int p[2][3])
{
}
总结:
实参 | 匹配形参 |
char c[8][10] | char (*)[10] |
指针数组 char *c[10] | char **c |
数组指针 char (*c)[10] | char (*c)[10] |
二级指针 char **p | char **p |