![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
З покажчиками зв'язані дві спеціальні операції: & і *.
Обидві ці операції є унарними, тобто мають один операнд, перед якими вони ставляться. Операція & відповідає операції «взяти адресу». Операція * відповідає словам «значення, розташоване за зазначеною адресою». Унарні операції & і * мають найвищий пріоритет нарівні з унарним мінусом.
Найпростіші дії з покажчиками ілюструється наступною програмою.
Приклад:
#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; Прочитано: 541 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!