МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Операції з покажчикамиЗ покажчиками зв'язані дві спеціальні операції: & і *. Обидві ці операції є унарними, тобто мають один операнд, перед якими вони ставляться. Операція & відповідає операції «взяти адресу». Операція * відповідає словам «значення, розташоване за зазначеною адресою». Унарні операції & і * мають найвищий пріоритет нарівні з унарним мінусом. Найпростіші дії з покажчиками ілюструється наступною програмою. Приклад: #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 не буде виконаний.
|
||||||||
|