@Paantvel

Как работает массив?

Получается что массив сам по себе это указатель на первый элемент этого массива?
К примеру:
int array[3];
Если мы попробуем присвоить ссылку всему массиву (не знаю зачем):
int &link = array; //То мы получим ошибку
Но если сделаем так:
int &link = *array;  // Все будет норм, но ссылка присвоится только первому элементу массива

Т.е. сам по себе array это адрес в памяти но *array уже значение. Можно попробовать сделать cout в консоль
Ведет себя как указатель.
Раз *array дало значение равное array[0], по этой же логике попробуем обратится ко второму элементу этого массива
*(array + 1);
И при выводе в консоль получаем значение второго элемента
И т.д.
То есть:
array[0] = *(array + 0)
array[1] = *(array + 1)
array[2] = *(array + 2)
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Массив — это отдельный тип, но он конвертируется в указатель. Мало того, в Си передача массивов в функции возможна только через указатель.
Потому *array — это превратить в указатель, разыменовать, и будет ССЫЛКА на 0-й элемент.
array+1 — это конвертируем в указатель, сдвигаем на единичку
А *(array+1) — ссылка на 1-й элемент.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы