Когда функция имеет параметр массива определенного размера, почему она заменяется указателем?

Учитывая следующую программу,

#include 

using namespace std;

void foo( char a[100] )
{
    cout < "foo() " < sizeof( a ) < endl;
}

int main()
{
    char bar[100] = { 0 };
    cout < "main() " < sizeof( bar ) < endl;
    foo( bar );
    return 0;
}

Ответы на вопрос(3)

Ваш ответ на вопрос