Уважаемые знатоки Си, внимание вопрос:
Я всегда считал, что довольно хорошо знаю Си. Но недавно я столкнулся с вот такой вот особенностью:
int main(){
printf ( "%x %x\n" , sizeof ( &main ) , &main ) ;
printf ( "%x %x\n" , sizeof ( main ) , main ) ;
return 0 ;
}
и на выводе получил:
8 87a05a0
1 87a05a0
В первой строке выводятся вполне ожидаемые значения. Во второй строке значение main, как я и ожидал, совпадает с &main, а вот то, что sizeof ( main ) равно 1 меня удивило.
Кто-нибудь мне обьяснит, почему это так ?