Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Выражения и арифметические действия с указателями



Указатели могут использоваться как операнды в арифметических выражениях, выражениях присваивания и выражениях сравнения. Число арифметических операций с указателями ограничено. Указатели можно увеличивать (++), уменьшать (--), складывать с указателем целые числа (+ или +=), вычитать из него целые числа (- или -=) или вычитать один указатель из другого. Арифметические действия над указателями имеют свои особенности. Рассмотрим это на простейшем примере.

#include <stdio.h>

void main()

{

short int x; // x – целое число

short int *p, *p1; // указывают на целые числа

p=&x; // указателю присваивается адрес целого числа х

p1=p+3;

printf("Начальное значение р: %d\n", p);

printf("Конечное значение ++р: %d\n", ++p);

printf("Конечное значение --р: %d\n", --p);

printf("Конечное значение р1: %d\n", p1);

}

Результаты работы программы:

Начальное значение р: 1245052

Конечное значение ++р: 1245054

Конечное значение --р: 1245052

Конечное значение р1: 1245058

По результатам выполнения этой программы мы видим, что при операции ++р значение указателя р увеличивается не на 1, а на 2. И это правильно, так как новое значение указателя должно указывать не на следующий адрес, а на адрес следующего короткого целого. А короткое целое, как известно, занимает два байта памяти. Если бы базовый тип указателя был не short int, a double, то были бы напечатаны адреса, отличающиеся на 8, именно столько байт памяти занимает переменная типа double, т.е. при каждой операции ++р значение указателя будет увеличиваться на количество байт, занимаемых переменной базового типа указателя, а при операции --р соответственно уменьшаться. К указателям можно прибавлять или вычитать некоторое целое. В данной программе указатель р1 представляет собой сумму значений указателя р и целого числа 3. Результат равен 1245058, т.е. увеличился на 6 по сравнению с исходным значением указателя р. Можно так же вычитать один указатель из другого. Так, если р и р1 – указатели на элементы одного и того же массива, то операция р–р1 дает такой же результат, как и вычитание соответствующих индексов массива. Указатели можно сравнивать, при этом применимы все 6 операций:

<, >, <=, >=, =, ==,!=.

Сравнение p<g означает, что адрес, находящийся в р, меньше адреса, находящегося в g.





Дата публикования: 2015-01-23; Прочитано: 266 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...