![]() ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Для доступа к элементам массива тоже существуют два способаПервый способ доступа к элементам массива связан с использованием обычных индексных выражений вида arr[i]. Второй способ связан с использованием адресного выражения (или выражения с указателем на массив) *(ptr+i) В общем случае индексное выражение в языке Си имеет вид: выражение_1[выражение_2] где выражение_1 – это любой указатель, например, идентификатор массив, а выражение_2 – это целая величина. Однако требуется только, чтобы одно из выражений было указателем, а второе целой величиной. Поэтому выражение_1 может быть целой величиной, а выражение_2 – указателем. Рассмотрим, как вычисляется индексное выражение arr[5]. Идентификатор arr является указателем начала массива. В соответствии с правилами выполнения операции сложения указателя с целой величиной целая величина преобразуется к адресному представлению путём умножения её на размер типа, адресуемого указателем. Целая константа 5 умножается на размер типа int преобразованное значение числа 5 представляет 5 позиций типа int. Это преобразованное значение числа 5 складывается со значением указателя arr, то даёт адрес, относящийся к шестой (т.к. нумерация идёт с нулевого индекса) позиции типа int после arr. К полученному результату применяется операция “разадресация”. Результатом является значение шестого элемента массива. В терминах языка Си это выглядит так: arr[5]=*(arr+5)=*(arr+5*syzeof(int)) Следовательно следующие выражения ссылаются на шестой элемент массива arr. arr[5] 5[arr] *(arr+5) *(5+arr) Как следует из определения индексного выражения, любой указатель может быть задан с индексом. Указатель на массив также может быть проиндексирован. выражения ptr[5] 5[pt] ссылаются на тот же шестой элемент массива arr. Если расписать индексное выражение ptr[5], то получится адресное выражение *(ptr+5) Не нашли, что искали? Воспользуйтесь поиском:
|