Адресная арифметика
Адресная арифметика
Аддитивные операции, выполняемые над указателем и целым, имеют осмысленный результат в том случае, если указатель адресует массив памяти, а целое значение представляет смещение в пределах этого массива. Преобразование целого значения к адресному смещению предполагает, что в пределах смещения вплотную расположены элементы одинакового размера. Это предположение справедливо именно для элементов массива, поскольку массив определяется как последовательность значений одинакового типа, расположенных в смежных ячейках памяти. Способ хранения других типов данных не гарантирует сплошного заполнения памяти, т.е. даже между ячейками памяти, содержащими элементы одного и того же типа данных, возможны участки неиспользованной памяти. Поэтому корректность сложения и вычитания адресов, ссылающихся на какие-либо другие объекты, не гарантируется.
На компьютерах с сегментной архитектурой памяти (в частности, с микропроцессором типа 8086/8088) аддитивные операции над адресным и целым значениями могут не всегда выполняться правильно. Это вызвано тем, что указатели, используемые в программе, могут иметь различные размеры в зависимости от используемой модели памяти. Например, при компиляции программы в некоторой стандартной модели памяти адресные модификаторы (near, huge, far) могут специфицировать для какого-либо указателя другой размер, чем определяемый по умолчанию выбранной моделью памяти. Более подробная информация о работе с указателями в различных моделях памяти приведена в разделе 8 "Модели памяти".
Примеры:
int i = 4, j;
float x[10];
float *px;
px = &x[4] + 1; /* пример 1 */
j = &x[i] — &x[i-2]; /* пример 2*/
В первом примере целочисленный операнд i складывается с адресом пятого (по порядку следования) элемента массива х. Значение i умножается на длину типа float и складывается с адресом x[4]. Значение результирующего указателя представляет собой адрес девятого элемента массива.
Во втором примере адрес третьего элемента массива х (заданный как &х[i-2]) вычитается из адреса пятого элемента (заданного как &x[i]). Полученная разность делится на размер типа float. В результате получается целое значение 2.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
64-битовая арифметика
64-битовая арифметика Арифметика 64-битовых указателей файлов не так уж сложна, и для ее реализации в примерах программ используется принятый в Microsoft С 64-битовый тип данных LARGE_INTEGER, объединяющий в одном типе данных union величину типа LONGLONG (носящую название QuadPart) и две
Арифметика
Арифметика gmp_addСложение двух чисел.Синтаксис:recource gmp_add(resource x, recource y)Функция возвратит GMP-число, равное сумме аргументов x и y.gmp_subВычитание двух чисел.Синтаксис:recource gmp_sub(resource x, recource y)Функция возвратит GMP-число, равное разности аргументов x и y.gmp_mulУмножение двух
Адресная книга
Адресная книга В бурной виртуальной жизни у вас наверняка появится множество друзей и знакомых по переписке, вследствие чего запутаться и потерять какой-нибудь важный электронный адрес в бездне приходящей почты проще простого. Чтобы исключить подобные неприятности,
Адресная строка
Адресная строка Первый шаг мы с вами уже сделали, запустив браузер. Теперь остается просто вписать адрес нужного вам сайта или странички (этот адрес еще называют URL) в адресную строчку, которая вальяжно разлеглась в верхней части экрана. Затем нажать Enter – и дело в шляпе...
2.2.2. Адресная книга
2.2.2. Адресная книга Еще один интересный элемент настройки. Он связан с использованием адресной книги. Если включить опцию автоматический сбор адресов, то при написании письма все адреса ваших получателей будут автоматически добавляться в адресную книгу. Такие записи вы
Адресная книга
Адресная книга Первый раз я ввела электронный адрес в письме в графу Кому вручную. Чтобы в следующий раз этого не делать, я щелкаю правой кнопкой мыши на адресе и в появившемся контекстном меню выбираю строку Добавить в контакты Outlook (рис. 4.16). Рис. 4.16. Добавляем адрес в
Арифметика и bash
Арифметика и bash Скриптовой язык bash позволяет выполнять арифметические операции. Как вы уже видели в предыдущей статье, арифметика выполняется с помощью команды expr. Однако, подобно команде true, этот вариант считается медленным. Причина кроется в том, что для использования
Изменяемые и неизменяемые объекты; адресная арифметика и ссылки
Изменяемые и неизменяемые объекты; адресная арифметика и ссылки Объекты в Питоне бывают двух разновидностей - изменяемые и неизменяемые. Списки, например - объекты изменяемые, их содержимое и длину можно менять. Поскольку ключами словарей могут быть только неизменяемые
Глава 3 Списки, операторы, арифметика
Глава 3 Списки, операторы, арифметика В этой главе мы будем изучать специальные способы представления списков. Список - один из самых простых и полезных типов структур. Мы рассмотрим также некоторые программы для выполнения типовых операций над списками и, кроме того,
ОКНО ДИАЛОГА: Арифметика по Бутману
ОКНО ДИАЛОГА: Арифметика по Бутману Автор: Владимир ГуриевКомпьютеры Apple и так дешевыми не назовешь, но российским покупателям они особенно дороги. В экстремальных случаях разница в цене такова, что настырный Мак-юзер может слетать из Москвы в нью-йоркский Apple Store и
Адресная книга
Адресная книга Не забывайте добавлять ваших корреспондентов в адресную книгу. Сделать это просто — надо щелкнуть во входящем письме на ссылке в адресную книгу рядом с адресом отправителя (у поля От кого). Откроется окно добавления контакта в адресную книгу
4.2. Приложение Адресная книга
4.2. Приложение Адресная книга Адресная книга (Address Book) предназначена для хранения адресных карточек, которые содержат контактную информацию ваших друзей, коллег, знакомых. Приложение обеспечивает быстрый доступ к контактным данным, которые совместно используются