Как работает индексация массива по -разному между 1D и 2D массивами в C ++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как работает индексация массива по -разному между 1D и 2D массивами в C ++?

Сообщение Anonymous »

Я не понимаю, как на самом деле работает индексация массива в C ++. Я понимаю, что когда мы используем выражение x [n] (где x является адресом, а n является целым числом), компилятор рассматривает [] как оператор, который вычисляет смещение по базовому адресу. принимает умножение на число в [] (здесь y ).
Для массива 1D я понимаю, что arr интерпретируется как * (arr + i) , который перемещает адрес с i * sizeof (element_type) bytes. Рассмотрим этот пример: < /p>

Код: Выделить всё

char country[][20] = {"U.S.A", "CHINA", "RUSSIA"};
Если я получаю доступ к стране [2] , я получаю «Россию» (вся строка), а не символ «s ', как я мог бы ожидать, если оператор кронштейна просто перенесен на 2 байта с адреса начала. Последовательность символов "Россия" , а не символа ' (поскольку имя страны массива является адресом первого термина, который является «u» и Country [2] должен означать, что приходит 2 байта после адреса «u» )?


Подробнее здесь: https://stackoverflow.com/questions/795 ... rrays-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»