…
void Test( char array[20] )
{
cout << sizeof(array) << endl; // 输出 4
}
char array[20] = { 0 };
cout << sizeof(array) << endl; // 输出 20Test( array );
…
我们看到,对于同样的数组array,一个输出4,另一个输出20.这是因为void Test( char array[20] ) 中的array被降阶处理了,void Test( char array[20] ) 等同于 void Test( char array[] ) 也等同于void Test( char* const array ) 如果你原意,它甚至等同于void Test( char array[999] )
也就是说
void Test( char array[20] )
{
cout << sizeof(array) << endl;
}
被降成
void Test( char* const array )
{
cout << sizeof(array) << endl; // 既然是char*,当然输出4
}
…
void Test( char (&array)[20] )//是不是很像 char *p[20] 和 char (*p)[20] 的区别?
{
cout << sizeof(array) << endl;
}
char array[20] = { 0 };
cout << sizeof(array) << endl;
Test( array );
…