我很难理解数组的typedef
模式。
typedef char Char10[10];
void fun (Char10 a) // not passing reference (interested in pass by value)
{
if(typeid(Char10) == typeid(char*))
throw 0; // <--- never happens
}
int main ()
{
char a[10]; fun(a); // ok
char b[11]; fun(b); // why works ?
}
为什么
fun()
可以接受不同大小的数组?char[10]
和char[11]
不是不同的类型吗?
编辑:对于那些说它会衰变为指针的人,请看我的修改后的代码。char[10]
和char*
似乎不匹配。
a
。因此,在函数内部的if
中,您应该比较typeid(a) == typeid(char*)
,这将显示类型匹配。比较typeid(Char10) == typeid(char*)
不会显示任何内容。这些确实是不同的类型。 - AnT stands with Russia