大家都知道
void func(int arr[]);与void func(int arr[3]);都等价于void func(int *arr);
但是
void func(int (*arr)[])和void func(int (*arr)[3]);都等价于void func(int **arr);么?
1. g++ 3.4.2上的试验结果:
void func(int (*arr)[]);是非法的,要求给出具体维数;
void func(int (*arr)[3]);是合法的,但是并不等价于void func(int **arr);,因此不可以把"int **"类型的变量作为参数来调用func。
2. vs2003上的试验结果:
void func(int (*arr)[]);是合法的,等价于void func(int **arr);,因此可以把"int **"类型的变量作为参数来调用func;
void func(int (*arr)[3]);是合法的,但是不等价于void func(int **arr);,因此不可以把"int **"类型的变量作为参数来调用func。
个人比较倾向于g++的实验结果,觉得更合理一些......