Вопрос: Тогда что же понимается под "эквивалентностью указателей и массивов" в С? Ответ: Большая часть путаницы вокруг указателей в С происходит от непонимания этого утверждения. "Эквивалентность" указателей и массивов не позволяет говорить не только об идентичности, но и взаимозаменяемости. "Эквивалентность" относится к следующему ключевому определению: (Исключение составляют случаи, когда массив оказывается операндом sizeof, оператора & или инициализатором символьной строки для массива литер.) Вследствие этого определения нет заметной разницы в поведении оператора индексирования [], если его применять к массивам и указателям. Согласно правилу, приведенному выше, в выражении типа а[i] ссылка на массив "a" превращается в указатель и дальнейшая индексация происходит так, как будто существует выражение с указателем p[i] (хотя доступ к памяти будет различным, как описано в ответе на вопрос 2.2). В любом случае выражение x[i], где х — массив или указатель) равно по определению *((x)+(i)). Смотри: K&R I Разд.5.3 c.93-6; K&R II Разд.5.3 c. 99; H&S Разд.5.4.1 c. 93; ANSI Разд.3.2.2.1, Разд.3.3.2.1, Разд.3.3.6 . |