一维数组的名字传递给函数作为参数时,实际上为指针类型,这会让人误解,以为二维数组名字传递给函数作为参数时的类型为指向指针的指针,实际上因该是指向数组的指针:
#include <iostream>
using namespace std;
template<class T1, class T2>
int type_is_same(T1 t1, T2 t2)
{
return is_same<T1, T2>::value;
}
int main(){
int a[2][4] = {0};
int (*pArrayArray)[2][4] = nullptr;
int (*pArray)[4] = nullptr;
int *pInt = nullptr;
int i = 0;
cout<<type_is_same(&a, pArrayArray)<<endl; //输出:1
cout<<type_is_same(a, pArray)<<endl; //输出:1
cout<<type_is_same(&a[0], pArray)<<endl; //输出:1
cout<<type_is_same(a[0], pInt)<<endl; //输出:1
cout<<type_is_same(a[0][0], i)<<endl; //输出:1
cout<<type_is_same(&a[0][0], pInt)<<endl; //输出:1
return 0;
}