Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПТСПЦУВСБ / 24. Разыменование указателей на структуры в С. Арифметические действия с указателями

..docx
Скачиваний:
49
Добавлен:
27.12.2015
Размер:
270.69 Кб
Скачать

24. Разыменование указателей на структуры в С. Арифметические действия с указателями.

При разыменовании указателей на структуру для компактной записи можно

использовать особый оператор “->”. Если определена структура, объявлен и

инициализирован указатель на нее, то разыменовать указатель на структуру можно 2

способами:

typedef struct {

unsigned char channel;

unsigned char mode;

float amplifier;

} ADCChannel;

...

ADCChannel ADC0,*pADC0;

pADC0=&ADC0;

...

(*pADC0).mode=1; //Разыменование указателя обычным способом

pADC0->mode=1; //Разыменование с помощью специального оператора ”->”

Т.е. специализированный оператор “->” позволяет одновременно разыменовать

указатель и получить доступ к полю данных. Использование оператора “->”

предпочтительно.

Арифметические действия с указателями

Указатель можно инициализировать, присвоив ему адрес (например, как в строке 2

рис. 4.5).

Если инициализировать указатель, используя предопределенную константу “NULL”

(описанную в заголовочном файле stdlib.h) или численную константу 0, то

компилятор считает, что такой указатель никуда не указывает. 0 это единственная

численная константа, которую ANSI C разрешает явно присваивать указателю. Хотя в

большинстве случаев инициализация с помощью “NULL” и 0 идентична, рекомендуется

использовать “NULL”.

К указателям могут применяться операторы равенства и отношения (>, >=, <, <=, ==,

!=). Также к указателям может быть применен ограниченный набор арифметических

операций:

1. инкремент (++);

2. декремент (--);

3. добавление целого числа (+, +=);

4. вычитание целого числа (-, -=);

5. вычисление разности 2 указателей.

Результат арифметических действий зависит от типа указателя: инкремент и

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

на размер типа переменной, на который ссылается указатель. Поясняющий пример

приведен на рисунке 4.6.