Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



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

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

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

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

Приклад:

#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 не буде виконаний.




Переглядів: 1110

<== попередня сторінка | наступна сторінка ==>
Покажчики на багатовимірні масиви. | Масиви покажчиків

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.002 сек.