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

Операції з покажчиками



З покажчиками зв'язані дві спеціальні операції: & і *.

Обидві ці операції є унарними, тобто мають один операнд, перед якими вони ставляться. Операція & відповідає операції «взяти адресу». Операція * відповідає словам «значення, розташоване за зазначеною адресою». Унарні операції & і * мають найвищий пріоритет нарівні з унарним мінусом.

Найпростіші дії з покажчиками ілюструється наступною програмою.

Приклад:

#include <stdio.h>

/* Робота з покажчиками */

main()

{

float x=10.1,y;

float *pf;

pf=&x;

y=*pf;

printf(“x=%f y=%f”,x,y);

*pf++;

printf(“x=%f y=%f”,x,y);

y=1+*pf*y;

printf(“x=%f y=%f”,x,y);

return 0;

}

Над покажчиками можна виконувати унарні операції: інкремент і декремент. При виконанні операцій ++ і -- значення покажчика збільшується або зменшується на довжину типу, на який посилається використовуваний покажчик.

Приклад:

int *ptr, a[10];

ptr=&a[5];

ptr++; /* дорівнює адресі елемента a[6] */

ptr-і; /* дорівнює адресі елемента a[5] */

У бінарних операціях додавання і віднімання можуть брати участь покажчик і величина типу int. При цьому результатом операції буде покажчик на вихідний тип, а його значення буде на зазначене число елементів більше або менше вихідного.

Приклад:

int *ptr1, *ptr2, a[10];

int i=2;

ptr1=a+(і+4);/*дорівнює адресі елемента a[6] */

ptr2=ptr1-i;/* дорівнює адресі елемента a[4] */

В операції віднімання можуть брати участь два покажчика на той самий тип. Результат такої операції має тип int.

Приклад:

int *ptr1, *ptr2, a[10];

int i;

ptr1=a+4;

ptr2=a+9;

і=ptr1-ptr2;/* дорівнює 5*/

i=ptr2-ptr1;/* дорівнює -5*/

Також до покажчиків можна додавати деяке ціле або віднімати ціле.

Приклад:

Нехай покажчик Р має значення 200 і вказує на ціле. Тоді в результаті виконання оператора Р=Р+3;

Значення покажчика р буде 2006. Якщо ж покажчик р1=2000 був би покажчиком на float, то після застосування оператора Р1=Р1+10;

Значення р1 було б 2040.

Загальна формула для обчислення значення покажчика після виконання операції р=р+n; буде мати вигляд:

<p>=<p>+n*<кількість байт базового типу покажчика>

Значення двох покажчиків на однакові типи можна порівнювати в операціях ==,!=, <=, >, >= при цьому значення покажчиків розглядаються просто як цілі числа, а результат порівняння дорівнює 0 (неправда) або 1 (істина).

Приклад:

int *ptr1, *ptr2, a[10];

ptr1=a+5;

ptr2=a+7;

if (prt1>ptr2) a[3]=4;

У даному прикладі значення ptr1 менше значення ptr2 і тому оператор a[3]=4 не буде виконаний.





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



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