Известно, что имена массивов распадаются на указатель, такой как a[i]
, эквивалент *(a+i)
. Я наткнулся на вопрос, задавая мне предсказать результат:Array Syntax Confusion
int main(void)
{
printf("%c", "abcdefgh"[4]);
return 0;
}
ответ, который они говорят, e
и причина, которую них, как a[4]
преобразуется в *(a+4)
где a
является базовый адрес массива a
на подобных линиях мы может найти результат вышеупомянутого вопроса.
Но как я не понимаю, как с a[i]
разлагающихся в *(a+i)
потому компилятор обрабатывает это тот путь, но в фрагменте кода выше, как и почему мы будем рассматривать "abcdef"[4]
это?
«При использовании в выражении» - нет, не в любом выражении, только если это не операнд операторов 'sizeof' или' & '. –
@ TheParamagneticCroissant; Да. Отредактировал это. – haccks