Задать вопрос
@avion123678

Имена массивов в си?

Здравствуйте, чем является имя массива в C? Имя массива это не совсем указатель, так как для него не работает операция присваивания другого указателя. Clion отображает имя массива как некий класс int [n]. Так же адрес расположения массива и адрес, который он содержит совпадают. При создании многомерного массива (двух мерного в частности) имя массива имеет класс int [n][n]. Но также адрес расположения имени массива, и адрес который он содержит совпадают, поэтому приведением к типу int* можем получить обычный указатель на int и с помощью него, управлять выводи массива. При этом для функции нет разницы имя массива или указатель, так как она принимает просто адреса. Так что это за типы такие?
  • Вопрос задан
  • 869 просмотров
Подписаться 4 Средний Комментировать
Ответ пользователя CityCat4 К ответам на вопрос (3)
CityCat4
@CityCat4 Куратор тега C
Дома с переломом ноги
Здравствуйте, чем является имя массива в C?

Ничем. "Имя массива" - это просто удобное название для тех, кто не одолел темы указателей. Те, кто эту тему одолел, таким вопросом уже не задаются, потому что статические массивы типа int[5] для них просто перестают существовать. "Имя массива" указывает на его первый элемент, но сделать с ним ничего нельзя. Точка. Не нравится - используйте динамические массивы.
При создании многомерного массива (двух мерного в частности)

"Двумерный (трех- , четырех-, n- мерный) массив" - это абстракция. В памяти данные идут последовательно, следовательно вся "мерность" массива - это автоматическое перемещение текущего указателя к некоей точке. Что опять нас возвращает к вопросу о статических и динамических массивах.

Осваивайте указатели и все эти костыли отвалятся сами по себе.
Ответ написан
Комментировать