char str[] = " http://www.ibegroup.com/";
char *p = str ;
void Foo (char str[100]){
}
void *p = malloc(100);
Что за sizeof
str
, p
, str
, p
в приведенном выше 4 случая, в свою очередь?интервью вопрос о различном размере указателя под 32-битной архитектуры
Я проверил его под моей машине (которая, кажется, 64-битная) с этими результатами:
25 8 8 8
Но не понимают причину еще.
@ phihag, в чем смысл аргументов 'In функции, массивы разлагаются на указатели? –
массив ('char []') и указатели ('char *') суть одно и то же, почему относились по-разному? Я ожидаю, что оба значения одинаковы ... –
@Je Rog массивы и указатели ** не ** то же самое. Пожалуйста, следуйте ссылкам на часто задаваемые вопросы C, в этой главе подробно обсуждается эта глава. Короче говоря, массивы становятся (или «распадаются») указателями во всех контекстах * кроме * 'sizeof',' & 'и инициализации массива. – phihag