@assembled

Почему sizeof ( somefunc ) == 1?

Уважаемые знатоки Си, внимание вопрос:

Я всегда считал, что довольно хорошо знаю Си. Но недавно я столкнулся с вот такой вот особенностью:
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 меня удивило.
Кто-нибудь мне обьяснит, почему это так ?
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
https://msdn.microsoft.com/ru-ru/library/4s7x1k91.aspx
Оператор sizeof никогда не создает результат 0, даже для пустого класса.
Оператор sizeof не может использоваться со следующими операндами:
Функции. (Однако оператор sizeof можно применять к указателям на функции.)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы