Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Адресная арифметика




Для указателей-переменных разрешены некоторые операции:

· присваивание;

· инкремент или декремент;

· сложение или вычитание;

· сравнение.

Физическое увеличение или уменьшение значения указателя зависит от его типа. Если к указателю, описанному как type *ptr, прибавляется, или отнимается величинаN, то значение ptr изменяется на N*sizeof(type). // Напомню, что sizeof() выдает размер в байтах. Разность двух указателей типа type* - это разность их значений, поделенная на sizeof(type).

Пример

int *ptr1 = (int*)100,*ptr2=(int*)200;

ptr1++; ptr2 - =10;

printf(“%d”,ptr2-ptr1);

_______________________________

ptr1=102; ptr2=180; ptr2-ptr1=39;

Если ptr1 и ptr2 типа long* или float*,то: ptr1=104; ptr2=160; ptr2-ptr1=14 и т. д.

Приведем таблицу основных размеров, чтобы можно было выполнять адресные вычисления:

Тип Размер в байтах

char 1

_______________________________________________________

{unsigned}int 2

{short}

_______________________________________________________

{unsigned} long 4

float

_______________________________________________________

 

double 8

Выполнение адресных операций ограничено. Так, сравнение указателей выполняется правильно, если они одного типа и выполнена их привязка к одним и тем же объектам данных, например - к одному и тому же массиву. В сложениях и вычитаниях используются целочисленные или адресные абсолютные выражения. Слева и справа от символа присваивания размещаются указатели (справа может быть адресное выражение) одного типа.

Массивы

Массивы в Си представлены расположенными подряд ячейками памяти, доступ к которым обеспечивается либо через индексированные переменные, либо спомощьюуказателей.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных