пишу array, чтобы получить адрес первого вложенного массива мне возвращает адрес первого элемента вложенного массива, то есть array[0][0]. Это норм вообще? Я в курсе, что имя массива - это указатель на его первый элемент, но почему тогда, чтобы получить непосредственное значение мне нужно писать **array?
да, многомерные массив в C++ имеют линейную развертку в памяти
Первый элемент в многомерном массиве это другой массив
Строго говоря, это не многомерные массивы, а массивы массивов
это смотря у кого "говоря", у нас это и в С++ это многомерный массив
Ну, если я правильно только что все понял, то массивы массивов они только на логическом уровне
массив массивов тоже существует
И на физическом (в memory layout) тоже
Так, тогда я не понимаю. Если я пишу "a", мне возвращает адрес первого элемента (0x186ee условно), когда я пишу "*a" мне тоже возвращает адрес 0x186ee. И если во втором случае это совершенно логично, так как это адрес непосредственного значения, то почему мне в первом случае возвращает этот адрес, учитывая то, что я имею дело с двумерным массивом, я понять не могу
Илья, найдите термин "многомерный массив" в стандарте, за исключением Notes; вы будете удивлены
https://en.cppreference.com/w/cpp/language/array
Это не стандарт, как вы отлично знаете
Там обычно снизу есть ссылки.
Ну стандарт платен, так просто вам его никто не даст
Мы эти ссылки уже изучали неоднократно в pro:)
Обсуждают сегодня