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

Имя массива это адрес первого элемента или указатель на его первый элемент в Си?

Привет!
Есть код:
int arrOne[5] = {1,2,3,4,5};
Тут arrOne это адрес его первого элемента ? Или указатель на его первый элемент ? Или в указатель он превращается только когда это нужно (к примеру в арифметике адресов)? Или оба варианта верны ?

Немного другая тема:
int arrTwo[3][2] = {{1,2}, {3,4}, {5,6}};

А с двумерным массивом как ? Тут arrTwo это адрес первого элемента или указатель на его первый элемент т.е {1,2}? И получается arrTwo это адрес самого первого элемента {1,2} или же адрес первого элемента первого подмассива т.е {1}?
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Компьютерная академия «TOP»
    Учебная программа “Разработка программного обеспечения”
    30 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Микропетпроджект - домашнее облако homeCloud
А чем по вашему адрес от указателя отличается?

Про размерности массив ответ простой - arrTwo - это начало массива, первый элемент, его адрес в памяти. А дальше работает адресная арифметика.
Ответ написан
@Griglapidus
C++/Qt
C Array в памяти выделяется одним сплошным массивом не зависимо от размерности. его при желании даже можно преобразовать в 1 мерный массив:
int arr2[3][2] = {{1,2},{3,4},{5,6}};
auto arr1 = reinterpret_cast<int(&)[6]>(arr2);
Ответ написан
Комментировать
Adamos
@Adamos
Имя массива - это строка в коде программы, по которой компилятор определяет, что работает с вот этой конкретной областью памяти. Зная ее начальный адрес и применяя адресную арифметику для нахождения адреса хоть линейного, хоть двумерного элемента (там просто arr[x][y] превращается в начальный адрес + (x * второй размер массива + y) * размер переменной. Массивы в С - это всегда плоская область памяти, размерность существует только для программиста, для удобства).
Указатель - это и есть переменная, в которой хранится адрес другой переменной. Например, первого элемента массива. Объявление указателя вместо целого числа просто позволяет компилятору понять, что программист именно это и имел в виду, и не ругаться на подозрительные операции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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