Почти все, кто читает это, вероятно, знакомы с этими тремя ключевыми фактами о C:
- Когда вы указываете имя массива в выражении, он вычисляет (большую часть времени) указатель на первый элемент массива.
- Оператор
[]
подстроки массива <работает так же хорошо для указателей, как и для массивов. - Параметр функции, который, кажется, представляет собой массив, фактически объявляет указатель.
Эти три факта абсолютно важны для обработки массивов и указателей на C. Они не являются даже тремя отдельными фактами; они взаимосвязанные грани одной центральной концепции. Невозможно выполнить даже довольно базовое программирование на C без надлежащего понимания этой концепции.
Мой вопрос сегодня просто: как называется эта концепция?
Я предположил, что я старомодный, но я всегда называл его "эквивалентность между массивами и указателями в C", или "эквивалентность макета/указателя" для краткости. Но я узнал, что вы почти не можете сказать эти слова на SO; они в значительной степени табу.
Это может показаться абстрактным или философским вопросом, поэтому для более конкретного определения того, что я ищу, это простое существительное или именная фраза, которую я мог бы использовать в предложении "Да, из-за _____, подсчет массива может считаться синтаксическим сахаром для арифметики указателя", в ответ на, скажем, этот вопрос.
(Но, пожалуйста, обратите внимание, что я не ищу ответов на этот вопрос или ответов на вопрос "Что не так со словом" эквивалентность "?" Да, я знаю, он может ввести в заблуждение учащихся, чтобы представить, что массивы и указатели как-то одинаковы. У меня была эта путаница, когда я написал эту запись в списке часто задаваемых вопросов.)