Задать вопрос
@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)
  • Вопрос задан
  • 228 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Массив — это отдельный тип, но он конвертируется в указатель. Мало того, в Си передача массивов в функции возможна только через указатель.
Потому *array — это превратить в указатель, разыменовать, и будет ССЫЛКА на 0-й элемент.
array+1 — это конвертируем в указатель, сдвигаем на единичку
А *(array+1) — ссылка на 1-й элемент.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BacCM
@BacCM
C++ почти с рождения
Ссылку на массив тоже можно создать, просто тип переменной должен быть ссылка на массив.
Например так:
int arr[3] = { 1, 2, 3 };
	using arr3_t = int[3];
	arr3_t& ref = arr;
	ref[1] = 100;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы