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