Мастер Ломастер писал(а):demiurg301 писал(а):... а документально?
документальнее не бывает.
имя массива - это указатель объявленного типа на первый (нулевой) элемент массива.
Если строго, то «идентификатор массива в большинстве случаев
автоматически приводится к указателю на его первый элемент».
Но не всегда.
sizeof(array_name) даст размер всего массива (или ошибку времени компиляции, если массив задан без размера -- incomplete type), а не размер указателя на его первый элемент.
Ну и первый элемент -- это первый элемент данного массива, без учета подмассивов (в С нет дву- и более-мерных массивов, в нём есть массивы массивов).
Т.е. для массива
имя
array автоматически преобразуется к указателю на массив типа
int [3], так как
array[0] -- это не
int, а 3-элементный массив. И
&array[0] (чему более простая запись
array эквивалентна в силу автоматического приведения) означает адрес этого подмассива.
Код: Выделить всё
int (*parr)[3] = array; // правильно
int *pint = array; // ошибка
В первой строке мы завели указатель на
3-элементный массив и присвоили ему адрес первого подмассива. Адрес первого int в этом огороде нужно получать вручную
int *pint = &array[0][0]; либо
int *pint = array[0]; -- часть индексов придется вписать.
Где-то я недавно подробно расписывал это всё в свете
sizeof() для имени массива и для его элементов, с примерами и цитатами из стандарта.
Но, по кошачьей привычке, не сильно помню где тогда бродил -- тут или на электрониксе (возможно, и там, и там

), поэтому ссылку дать не могу.
С остальным (про «остроту» и «без нужды») согласен. Где-то пробегала картинка на тему соответствия языков программирования и оружия. Там и красивые водяные пистолеты были

.
Для С там была нарисована катана. «Таки да» -- долгие вдумчивые упражнения дают возможность короткими движениями сделать много. Но если без должного навыка махать как попало, то легко и себя поранить.
Так вот указатели -- составляющая режущей кромки этой катаны.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.