SlideShare a Scribd company logo
char c = '$';
int a=5;
float f=8.5;
Приклад 2:
int vr = 1;
int* ptr = &vr; // ptr містить адресу змінної vr
Вказівники
Тип Ім’яВказівник - це змінна, значенням якої є
адреса пам'яті, по якому зберігається об'єкт
певного типу (інша змінна).
Приклад 1:
int * p // за адресою, записаному в змінної p,
// Буде зберігається змінна типу int або, іншими словами, p вказує на тип
даних int
&отримання
адреси змінної
*отримання
значення змінної
«розіменування»
float a; // Оголошена дійсна змінна a
float * adr_a; // Оголошений покажчик на тип float
adr_a = & a; // Оператор записує в змінну adr_a адресу а
a = * adr_a; // Оператор записує в змінну a значення, що
зберігається за адресою adr_a
Операції з вказівниками
void prim1() // Приклад
{ int a=5, *p;
*p=a;
cout<<"це адреса змінної а "<<p<<" а це її значення "<< *p<<endl;
}
Присвоєння вказівників
#include <iostream>
#include<stdlib.h>
using namespace std;
int main ()
{setlocale (LC_ALL, "Rus");
system("chcp 1251");
float PI = 3.14159, * p1, * p2;
p1 = p2 = & PI;
cout << "За адресою p1 =" << p1 << " зберігається * p1 =" << * p1;
cout << "За адресою p2 =" << p2 << " зберігається * p2 =" << * p2;
system ( "pause");
return 0;
}
Операції над адресами
додавання і віднімання покажчиків з
константою
віднімання одного покажчика від іншого
інкремент
декремент
#include <iostream>
using namespace std;
int main ()
{
// Оголошення масиву з 10 елементів
double mas [10] = {1.29, 3.23, 7.98, 5.54, 8.32, 2.48, 7.1};
// Оголошення покажчика на double
double * p1;
// Присвоєння покажчику адреси нульового елемента масиву
p1 = & mas [0];
// Виведення значення нульового елемента масиву
cout << * p1 << endl;
// Збільшення значення адреси на 3 * 8 (розмір типу double) = 24,
// В результаті вказівник зміститься на три позиції розміром double кожна
p1 = p1 + 3;
// Виведення на екран значення третього елемента масиву
cout << * p1 << endl;
system ( "pause");
return 0;
}
Додавання
константи
до
вказівника
Різниця двох вказівників
Різниця двох вказівників - це різниця їх значень, поділена
на розмір типу в байтах.
Так, різниця вказівників на третій і нульовий елементи масиву дорівнює трьом, а на
третій і дев'ятий - шести.
Підсумовування двох покажчиків не допускається.
Інкремент переміщує вказівник до наступного елементу
масиву, а декремент - до попереднього:
double * p1;
float * p2;
int * i, n;
p1 ++; // Збільшення значення адреси на 8.
p2 ++; // Збільшення значення адреси на 4.
i ++; // Збільшення значення адреси на 4.
Вказівники і масиви
prim4()
{
// Оголошення масиву з 10 елементів
double mas [10] = {1.29, 3.23, 7.98, 5.54, 8.32, 2.48, 7.1};
// Оголошення покажчика на double
double * p1;
// Присвоєння покажчику адреси нульового елемента масиву
p1 = & mas [0];
// Виведення на екран знченія нульового елемента масиву
cout << * p1 << endl;
// Збільшення значення адреси на 3 * 8 (розмір типу double) = 24,
// В результаті зміститься на три елементи , розміром double кожний
p1 = p1 + 3;
// Виведення на екран значення третього елемента масиву
cout << * p1 << endl;
}
Вказівники і рядки
void prim5()
{
// Оголошення рядка
char s [] = "Перевірочка";
// Оголошення покажчика на рядок
char * ps;
// Присвоєння покажчику адреси початку рядка
ps = s;
// Виведення на екран значення першої літери (нульового елементу)
cout << s <<* ps << endl;
// Збільшення значення адреси на 2 * 1 (розмір типу char) = 3,
// В результаті зміститься на 2 елементи,
ps = ps + 2;
// Виведення на екран значення третього символа рядка
cout << * ps << endl;
}
Операції відношення
До вказівників також застосовуються операції
відношення ==,! =, <,>, <=,> =.
Іншими словами, вказівники можна
порівнювати.
Наприклад, якщо i вказує на п'ятий елемент
масиву, а j - на перший, то ставлення i> j
істинно.
Крім того, будь-який вказівник можна
порівнювати на рівність з нулем.
Перетворення типів
#include <iostream>
using namespace std;
int main ()
{
float PI = 3.14159; // Оголошена дійсна змінна PI
float * p1; // Оголошений вказівник на float - p1
double * p2; // Оголошений вказівник на double - p2
p1 = & PI; // Змінній p1 присвоюється значення адреси PI
p2 = (double *) p1; // Вказівником на double присвоюється значення, яке
посилається на тип float
cout << "За адресою p1 =" << p1 << "зберігається * p1 =" << * p1 ";
cout << "За адресою p2 =" << p2 << "зберігається * p2 =" << * p2 ";
system ( "pause");
return 0;
}
Завдання на роботу з вказівниками (сума, різниця, порівняння)
Масиви Рядки
Посилання
Приклад . #include <iostream>
using namespace std;
int main()
{
int t = 13,
int &r = t; // ініціалізація посилання на t тепер r
синонім імені t
cout << "Початкове значення t:" << t; r += 10; // зміна
значення t через посилання
cout<<"n Остаточне значення t:" << t;
return 0;
}
int &r
Тестування
http://krasnoukhov.github.io/college/cpp/#ix/0

More Related Content

What's hot

постанова № 305 щодо норм харчування
постанова № 305 щодо норм харчуванняпостанова № 305 щодо норм харчування
постанова № 305 щодо норм харчування
Нина Ибрагимова
 
Презентація-огляд «Ми щит і меч твій, Україно» (до Дня захисників та захисниц...
Презентація-огляд «Ми щит і меч твій, Україно» (до Дня захисників та захисниц...Презентація-огляд «Ми щит і меч твій, Україно» (до Дня захисників та захисниц...
Презентація-огляд «Ми щит і меч твій, Україно» (до Дня захисників та захисниц...
Тернопільська обласна універсальна наукова бібліотека
 
Описание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP VerticaОписание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP Vertica
Andrey Karpov
 
Органічне виробництво в україні
Органічне виробництво в україніОрганічне виробництво в україні
Органічне виробництво в україні
Taras Kutoviy
 
положення про індивідуальне навчання
положення про індивідуальне навчанняположення про індивідуальне навчання
положення про індивідуальне навчання
Gymn2
 
Технічне Регулювання 23.06.2015
Технічне Регулювання 23.06.2015Технічне Регулювання 23.06.2015
Технічне Регулювання 23.06.2015
Max Nefyodov
 
Проблемне питання педагога-організатора
Проблемне питання педагога-організатораПроблемне питання педагога-організатора
Проблемне питання педагога-організатора
Alla Kolosai
 
Status gvozdja
Status gvozdjaStatus gvozdja
Status gvozdja
Vesna Šmigić
 
Навчальна практика (Методичні вказівки)
Навчальна практика (Методичні вказівки)Навчальна практика (Методичні вказівки)
Навчальна практика (Методичні вказівки)
Yor11
 
Педагогічне портфоліо. Частина 1
Педагогічне портфоліо. Частина 1Педагогічне портфоліо. Частина 1
Педагогічне портфоліо. Частина 1
Iryna Sokolianska
 
Герої не вмирають, герої поміж нас
Герої не вмирають, герої поміж насГерої не вмирають, герої поміж нас
Герої не вмирають, герої поміж нас
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 
C Recursion, Pointers, Dynamic memory management
C Recursion, Pointers, Dynamic memory managementC Recursion, Pointers, Dynamic memory management
C Recursion, Pointers, Dynamic memory management
Sreedhar Chowdam
 
клепання
клепанняклепання
Методика неіснуюча тварина
Методика неіснуюча тваринаМетодика неіснуюча тварина
Методика неіснуюча тваринаlabinskiir-33
 
рядки
рядкирядки
рядки
cit-cit
 
Przyjazne naturze ksztaltowanie rzek i potokow
Przyjazne naturze ksztaltowanie rzek i potokowPrzyjazne naturze ksztaltowanie rzek i potokow
Przyjazne naturze ksztaltowanie rzek i potokowWyatt_Earp
 
Цінова дискримінація в Україні (Литвинець Я.)
Цінова дискримінація в Україні (Литвинець Я.)Цінова дискримінація в Україні (Литвинець Я.)
Цінова дискримінація в Україні (Литвинець Я.)
Alex Grebeshkov
 
Презентація до уроку "Ліквідація української козацької держави. Зруйнування С...
Презентація до уроку "Ліквідація української козацької держави. Зруйнування С...Презентація до уроку "Ліквідація української козацької держави. Зруйнування С...
Презентація до уроку "Ліквідація української козацької держави. Зруйнування С...
grabeshko
 

What's hot (20)

постанова № 305 щодо норм харчування
постанова № 305 щодо норм харчуванняпостанова № 305 щодо норм харчування
постанова № 305 щодо норм харчування
 
Презентація-огляд «Ми щит і меч твій, Україно» (до Дня захисників та захисниц...
Презентація-огляд «Ми щит і меч твій, Україно» (до Дня захисників та захисниц...Презентація-огляд «Ми щит і меч твій, Україно» (до Дня захисників та захисниц...
Презентація-огляд «Ми щит і меч твій, Україно» (до Дня захисників та захисниц...
 
Описание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP VerticaОписание архитектуры СУБД HP Vertica
Описание архитектуры СУБД HP Vertica
 
Органічне виробництво в україні
Органічне виробництво в україніОрганічне виробництво в україні
Органічне виробництво в україні
 
положення про індивідуальне навчання
положення про індивідуальне навчанняположення про індивідуальне навчання
положення про індивідуальне навчання
 
Технічне Регулювання 23.06.2015
Технічне Регулювання 23.06.2015Технічне Регулювання 23.06.2015
Технічне Регулювання 23.06.2015
 
Проблемне питання педагога-організатора
Проблемне питання педагога-організатораПроблемне питання педагога-організатора
Проблемне питання педагога-організатора
 
Status gvozdja
Status gvozdjaStatus gvozdja
Status gvozdja
 
Навчальна практика (Методичні вказівки)
Навчальна практика (Методичні вказівки)Навчальна практика (Методичні вказівки)
Навчальна практика (Методичні вказівки)
 
Педагогічне портфоліо. Частина 1
Педагогічне портфоліо. Частина 1Педагогічне портфоліо. Частина 1
Педагогічне портфоліо. Частина 1
 
Герої не вмирають, герої поміж нас
Герої не вмирають, герої поміж насГерої не вмирають, герої поміж нас
Герої не вмирають, герої поміж нас
 
C Recursion, Pointers, Dynamic memory management
C Recursion, Pointers, Dynamic memory managementC Recursion, Pointers, Dynamic memory management
C Recursion, Pointers, Dynamic memory management
 
клепання
клепанняклепання
клепання
 
Методика неіснуюча тварина
Методика неіснуюча тваринаМетодика неіснуюча тварина
Методика неіснуюча тварина
 
рядки
рядкирядки
рядки
 
Przyjazne naturze ksztaltowanie rzek i potokow
Przyjazne naturze ksztaltowanie rzek i potokowPrzyjazne naturze ksztaltowanie rzek i potokow
Przyjazne naturze ksztaltowanie rzek i potokow
 
урок 7 Типи соціальної інформації
урок 7 Типи соціальної інформаціїурок 7 Типи соціальної інформації
урок 7 Типи соціальної інформації
 
Цінова дискримінація в Україні (Литвинець Я.)
Цінова дискримінація в Україні (Литвинець Я.)Цінова дискримінація в Україні (Литвинець Я.)
Цінова дискримінація в Україні (Литвинець Я.)
 
будова токарного стд 120 м верстата
будова токарного стд 120 м верстатабудова токарного стд 120 м верстата
будова токарного стд 120 м верстата
 
Презентація до уроку "Ліквідація української козацької держави. Зруйнування С...
Презентація до уроку "Ліквідація української козацької держави. Зруйнування С...Презентація до уроку "Ліквідація української козацької держави. Зруйнування С...
Презентація до уроку "Ліквідація української козацької держави. Зруйнування С...
 

Recently uploaded

Управлінські процеси закладу освіти.pptx
Управлінські процеси закладу освіти.pptxУправлінські процеси закладу освіти.pptx
Управлінські процеси закладу освіти.pptx
ssuserce4e97
 
Практика студентів на складі одягу H&M у Польщі
Практика студентів на складі одягу H&M у ПольщіПрактика студентів на складі одягу H&M у Польщі
Практика студентів на складі одягу H&M у Польщі
tetiana1958
 
курсова робота теорема Штольца з математики
курсова робота теорема Штольца з математикикурсова робота теорема Штольца з математики
курсова робота теорема Штольца з математики
ssuser3a363c
 
№ 133, 04.06.2024, підсумки методичної роботи з учителями школи у 2023-2024 ...
№ 133,  04.06.2024, підсумки методичної роботи з учителями школи у 2023-2024 ...№ 133,  04.06.2024, підсумки методичної роботи з учителями школи у 2023-2024 ...
№ 133, 04.06.2024, підсумки методичної роботи з учителями школи у 2023-2024 ...
olha1koval
 
Р.Л.Стівенсон "Вересовий трунок". Допомога учню
Р.Л.Стівенсон "Вересовий трунок". Допомога учнюР.Л.Стівенсон "Вересовий трунок". Допомога учню
Р.Л.Стівенсон "Вересовий трунок". Допомога учню
Adriana Himinets
 
педрада 2024 травень 2педрада 2024 травень .pptx
педрада 2024 травень 2педрада 2024 травень .pptxпедрада 2024 травень 2педрада 2024 травень .pptx
педрада 2024 травень 2педрада 2024 травень .pptx
home
 
Звіт самооцінювання осв. середовище 2024.ppt
Звіт самооцінювання осв. середовище 2024.pptЗвіт самооцінювання осв. середовище 2024.ppt
Звіт самооцінювання осв. середовище 2024.ppt
ssuserce4e97
 
zarahuvannia do pershogo klassu IMG_20240607_0001.pdf
zarahuvannia do pershogo klassu IMG_20240607_0001.pdfzarahuvannia do pershogo klassu IMG_20240607_0001.pdf
zarahuvannia do pershogo klassu IMG_20240607_0001.pdf
AleksSaf
 
Звіт керівника закладу за 2023-2024.pptx
Звіт керівника закладу за 2023-2024.pptxЗвіт керівника закладу за 2023-2024.pptx
Звіт керівника закладу за 2023-2024.pptx
ssuserd0ab23
 
Передвиборча програма Майора Станіслава
Передвиборча програма  Майора СтаніславаПередвиборча програма  Майора Станіслава
Передвиборча програма Майора Станіслава
tetiana1958
 
Випуск магістрів- науковців факультету мехатроніки та інжинірингу, 2024 р.
Випуск магістрів- науковців факультету мехатроніки та інжинірингу, 2024 р.Випуск магістрів- науковців факультету мехатроніки та інжинірингу, 2024 р.
Випуск магістрів- науковців факультету мехатроніки та інжинірингу, 2024 р.
tetiana1958
 
Р.Л.Стівенсон "Вересовий трунок". Презентація
Р.Л.Стівенсон "Вересовий трунок". ПрезентаціяР.Л.Стівенсон "Вересовий трунок". Презентація
Р.Л.Стівенсон "Вересовий трунок". Презентація
Adriana Himinets
 
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptxПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ssuserd1824d
 
Зернобобові культури в Україні: сучасний стан та перспективи використання
Зернобобові культури в Україні: сучасний стан та перспективи використанняЗернобобові культури в Україні: сучасний стан та перспективи використання
Зернобобові культури в Україні: сучасний стан та перспективи використання
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptxzvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
sadochok
 
Постанова №648 уряду від 04 червня 2024 року. .pdf
Постанова №648 уряду від 04 червня 2024 року. .pdfПостанова №648 уряду від 04 червня 2024 року. .pdf
Постанова №648 уряду від 04 червня 2024 року. .pdf
24tvua
 
Передвиборча програма Ковальової Катерини
Передвиборча програма Ковальової КатериниПередвиборча програма Ковальової Катерини
Передвиборча програма Ковальової Катерини
tetiana1958
 
"Він плакав і сміявся з народом: творчий спадок Федьковича"
"Він плакав і сміявся з народом: творчий спадок Федьковича""Він плакав і сміявся з народом: творчий спадок Федьковича"
"Він плакав і сміявся з народом: творчий спадок Федьковича"
Чернівецька обласна бібліотека для дітей
 
Проєкт "Подорож містами України". Буковина
Проєкт "Подорож містами України". БуковинаПроєкт "Подорож містами України". Буковина
Проєкт "Подорож містами України". Буковина
НБУ для дітей
 
Оригінал. Переклад. Види перекладів. Допомога учню
Оригінал. Переклад. Види перекладів. Допомога учнюОригінал. Переклад. Види перекладів. Допомога учню
Оригінал. Переклад. Види перекладів. Допомога учню
Adriana Himinets
 

Recently uploaded (20)

Управлінські процеси закладу освіти.pptx
Управлінські процеси закладу освіти.pptxУправлінські процеси закладу освіти.pptx
Управлінські процеси закладу освіти.pptx
 
Практика студентів на складі одягу H&M у Польщі
Практика студентів на складі одягу H&M у ПольщіПрактика студентів на складі одягу H&M у Польщі
Практика студентів на складі одягу H&M у Польщі
 
курсова робота теорема Штольца з математики
курсова робота теорема Штольца з математикикурсова робота теорема Штольца з математики
курсова робота теорема Штольца з математики
 
№ 133, 04.06.2024, підсумки методичної роботи з учителями школи у 2023-2024 ...
№ 133,  04.06.2024, підсумки методичної роботи з учителями школи у 2023-2024 ...№ 133,  04.06.2024, підсумки методичної роботи з учителями школи у 2023-2024 ...
№ 133, 04.06.2024, підсумки методичної роботи з учителями школи у 2023-2024 ...
 
Р.Л.Стівенсон "Вересовий трунок". Допомога учню
Р.Л.Стівенсон "Вересовий трунок". Допомога учнюР.Л.Стівенсон "Вересовий трунок". Допомога учню
Р.Л.Стівенсон "Вересовий трунок". Допомога учню
 
педрада 2024 травень 2педрада 2024 травень .pptx
педрада 2024 травень 2педрада 2024 травень .pptxпедрада 2024 травень 2педрада 2024 травень .pptx
педрада 2024 травень 2педрада 2024 травень .pptx
 
Звіт самооцінювання осв. середовище 2024.ppt
Звіт самооцінювання осв. середовище 2024.pptЗвіт самооцінювання осв. середовище 2024.ppt
Звіт самооцінювання осв. середовище 2024.ppt
 
zarahuvannia do pershogo klassu IMG_20240607_0001.pdf
zarahuvannia do pershogo klassu IMG_20240607_0001.pdfzarahuvannia do pershogo klassu IMG_20240607_0001.pdf
zarahuvannia do pershogo klassu IMG_20240607_0001.pdf
 
Звіт керівника закладу за 2023-2024.pptx
Звіт керівника закладу за 2023-2024.pptxЗвіт керівника закладу за 2023-2024.pptx
Звіт керівника закладу за 2023-2024.pptx
 
Передвиборча програма Майора Станіслава
Передвиборча програма  Майора СтаніславаПередвиборча програма  Майора Станіслава
Передвиборча програма Майора Станіслава
 
Випуск магістрів- науковців факультету мехатроніки та інжинірингу, 2024 р.
Випуск магістрів- науковців факультету мехатроніки та інжинірингу, 2024 р.Випуск магістрів- науковців факультету мехатроніки та інжинірингу, 2024 р.
Випуск магістрів- науковців факультету мехатроніки та інжинірингу, 2024 р.
 
Р.Л.Стівенсон "Вересовий трунок". Презентація
Р.Л.Стівенсон "Вересовий трунок". ПрезентаціяР.Л.Стівенсон "Вересовий трунок". Презентація
Р.Л.Стівенсон "Вересовий трунок". Презентація
 
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptxПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
ПРЕЗЕНТАЦІЯ ПРО СХОВИЩЕ захисна споруда.pptx
 
Зернобобові культури в Україні: сучасний стан та перспективи використання
Зернобобові культури в Україні: сучасний стан та перспективи використанняЗернобобові культури в Україні: сучасний стан та перспективи використання
Зернобобові культури в Україні: сучасний стан та перспективи використання
 
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptxzvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
zvit_kerivnuka_ZDO28_2023-2024_n.rik.pptx
 
Постанова №648 уряду від 04 червня 2024 року. .pdf
Постанова №648 уряду від 04 червня 2024 року. .pdfПостанова №648 уряду від 04 червня 2024 року. .pdf
Постанова №648 уряду від 04 червня 2024 року. .pdf
 
Передвиборча програма Ковальової Катерини
Передвиборча програма Ковальової КатериниПередвиборча програма Ковальової Катерини
Передвиборча програма Ковальової Катерини
 
"Він плакав і сміявся з народом: творчий спадок Федьковича"
"Він плакав і сміявся з народом: творчий спадок Федьковича""Він плакав і сміявся з народом: творчий спадок Федьковича"
"Він плакав і сміявся з народом: творчий спадок Федьковича"
 
Проєкт "Подорож містами України". Буковина
Проєкт "Подорож містами України". БуковинаПроєкт "Подорож містами України". Буковина
Проєкт "Подорож містами України". Буковина
 
Оригінал. Переклад. Види перекладів. Допомога учню
Оригінал. Переклад. Види перекладів. Допомога учнюОригінал. Переклад. Види перекладів. Допомога учню
Оригінал. Переклад. Види перекладів. Допомога учню
 

Вказівники с++

  • 1.
  • 2. char c = '$'; int a=5; float f=8.5;
  • 3. Приклад 2: int vr = 1; int* ptr = &vr; // ptr містить адресу змінної vr Вказівники Тип Ім’яВказівник - це змінна, значенням якої є адреса пам'яті, по якому зберігається об'єкт певного типу (інша змінна). Приклад 1: int * p // за адресою, записаному в змінної p, // Буде зберігається змінна типу int або, іншими словами, p вказує на тип даних int
  • 4. &отримання адреси змінної *отримання значення змінної «розіменування» float a; // Оголошена дійсна змінна a float * adr_a; // Оголошений покажчик на тип float adr_a = & a; // Оператор записує в змінну adr_a адресу а a = * adr_a; // Оператор записує в змінну a значення, що зберігається за адресою adr_a Операції з вказівниками void prim1() // Приклад { int a=5, *p; *p=a; cout<<"це адреса змінної а "<<p<<" а це її значення "<< *p<<endl; }
  • 5. Присвоєння вказівників #include <iostream> #include<stdlib.h> using namespace std; int main () {setlocale (LC_ALL, "Rus"); system("chcp 1251"); float PI = 3.14159, * p1, * p2; p1 = p2 = & PI; cout << "За адресою p1 =" << p1 << " зберігається * p1 =" << * p1; cout << "За адресою p2 =" << p2 << " зберігається * p2 =" << * p2; system ( "pause"); return 0; }
  • 6. Операції над адресами додавання і віднімання покажчиків з константою віднімання одного покажчика від іншого інкремент декремент
  • 7. #include <iostream> using namespace std; int main () { // Оголошення масиву з 10 елементів double mas [10] = {1.29, 3.23, 7.98, 5.54, 8.32, 2.48, 7.1}; // Оголошення покажчика на double double * p1; // Присвоєння покажчику адреси нульового елемента масиву p1 = & mas [0]; // Виведення значення нульового елемента масиву cout << * p1 << endl; // Збільшення значення адреси на 3 * 8 (розмір типу double) = 24, // В результаті вказівник зміститься на три позиції розміром double кожна p1 = p1 + 3; // Виведення на екран значення третього елемента масиву cout << * p1 << endl; system ( "pause"); return 0; } Додавання константи до вказівника
  • 8. Різниця двох вказівників Різниця двох вказівників - це різниця їх значень, поділена на розмір типу в байтах. Так, різниця вказівників на третій і нульовий елементи масиву дорівнює трьом, а на третій і дев'ятий - шести. Підсумовування двох покажчиків не допускається. Інкремент переміщує вказівник до наступного елементу масиву, а декремент - до попереднього: double * p1; float * p2; int * i, n; p1 ++; // Збільшення значення адреси на 8. p2 ++; // Збільшення значення адреси на 4. i ++; // Збільшення значення адреси на 4.
  • 9. Вказівники і масиви prim4() { // Оголошення масиву з 10 елементів double mas [10] = {1.29, 3.23, 7.98, 5.54, 8.32, 2.48, 7.1}; // Оголошення покажчика на double double * p1; // Присвоєння покажчику адреси нульового елемента масиву p1 = & mas [0]; // Виведення на екран знченія нульового елемента масиву cout << * p1 << endl; // Збільшення значення адреси на 3 * 8 (розмір типу double) = 24, // В результаті зміститься на три елементи , розміром double кожний p1 = p1 + 3; // Виведення на екран значення третього елемента масиву cout << * p1 << endl; }
  • 10. Вказівники і рядки void prim5() { // Оголошення рядка char s [] = "Перевірочка"; // Оголошення покажчика на рядок char * ps; // Присвоєння покажчику адреси початку рядка ps = s; // Виведення на екран значення першої літери (нульового елементу) cout << s <<* ps << endl; // Збільшення значення адреси на 2 * 1 (розмір типу char) = 3, // В результаті зміститься на 2 елементи, ps = ps + 2; // Виведення на екран значення третього символа рядка cout << * ps << endl; }
  • 11. Операції відношення До вказівників також застосовуються операції відношення ==,! =, <,>, <=,> =. Іншими словами, вказівники можна порівнювати. Наприклад, якщо i вказує на п'ятий елемент масиву, а j - на перший, то ставлення i> j істинно. Крім того, будь-який вказівник можна порівнювати на рівність з нулем.
  • 12. Перетворення типів #include <iostream> using namespace std; int main () { float PI = 3.14159; // Оголошена дійсна змінна PI float * p1; // Оголошений вказівник на float - p1 double * p2; // Оголошений вказівник на double - p2 p1 = & PI; // Змінній p1 присвоюється значення адреси PI p2 = (double *) p1; // Вказівником на double присвоюється значення, яке посилається на тип float cout << "За адресою p1 =" << p1 << "зберігається * p1 =" << * p1 "; cout << "За адресою p2 =" << p2 << "зберігається * p2 =" << * p2 "; system ( "pause"); return 0; }
  • 13. Завдання на роботу з вказівниками (сума, різниця, порівняння) Масиви Рядки
  • 14. Посилання Приклад . #include <iostream> using namespace std; int main() { int t = 13, int &r = t; // ініціалізація посилання на t тепер r синонім імені t cout << "Початкове значення t:" << t; r += 10; // зміна значення t через посилання cout<<"n Остаточне значення t:" << t; return 0; } int &r

Editor's Notes

  1. Коли ми оголошуємо змінну компілятор автоматично виділяє пам'ять згідно типу змінної: char C = '$'; // Буде виділена під символьну змінну С, // І їй присвоєно стартове значення  Доступ до оголошеної змінної здійснюється за її імені. При цьому всі звернення до змінної змінюються на адресу пам'яті, в якій зберігається її значення:  cout << C; // З комірки пам'яті з ім'ям C буде вилучено значення // І виведено на екран  При завершенні програми або функції, в якій була описана змінна, пам'ять автоматично звільняється. Ідея роботи з вказівниками полягає в тому, що користувач працює з адресою комірки пам'яті і має можливість динамічно створювати і знищувати змінні.
  2. Над адресами в C ++ визначені наступні арифметичні операції: додавання і віднімання покажчиків з константою; віднімання одного покажчика з іншого; інкремент; декремент. Додавання і віднімання покажчиків з константою n означає, що покажчик переміщається по осередках пам'яті на стільки байт, скільки займає n змінних того типу, на який він вказує. Припустимо, що покажчик має символьний тип і його значення дорівнює 100. Результат складання цього покажчика з одиницею - 101, так як для зберігання змінної типу char потрібно 1 байт. Якщо ж значення покажчика дорівнює 100, але він має цілочисельний тип, то результат його складання з одиницею становитиме 104, так як для змінної типу int відводиться 4 байта. Віднімання двох покажчиків визначає, скільки змінних даного типу розміщується між зазначеними осередками. Ці операції застосовні тільки до покажчиків одного типу і мають сенс в основному зі структурними типами даних, наприклад з масивами. Фактично виходить, що значення покажчика змінюється на величину sizeof (тип). Якщо покажчик на певний тип збільшується або зменшується на константу, то його значення змінюється на величину цієї константи, помножену на розмір об'єкта даного типу. наприклад:  
  3. Якщо покажчики посилаються на різні типи, то при присвоєнні значення одного покажчика іншому, необхідно використовувати перетворення типів Без перетворення можна привласнювати будь-якому вказівником покажчик void *. Розглянемо приклад роботи з покажчиками різних типів: В покажчиках p1 і p2 зберігається один і той же адресу, але значення, на які вони посилаються, виявляються різними. Це пов'язано з тим, що покажчик типу * float адресує 4 байта, а покажчик * double - 8 байт. Після присвоювання p2 = (double *) p1; при зверненні до * p2 відбувається наступне: до змінної, що зберігається за адресою p1, дописується ще 4 таких байт з пам'яті. В результаті значення * p2 не збігається зі значенням * p1.  
  4. Посилання (reference) являє собою видозмінену форму вказівника, яка використовується в якості псевдоніму (іншого імені) змінної. У зв'язку з цим посилання не потребують додаткової пам’яті. Для визначення посилання використовують символ & (амперсант), який ставитися перед змінною-посиланням. Змінні типу посилання можуть використовуватися в наступних цілях: • замість передачі у функцію об'єкта за значенням; • для визначення конструктора копії; • для перевантаження унарних операцій; У даному випадку ми використовували посилання в якості псевдоніму змінної. У цій ситуації воно називається незалежним посиланням (independent reference) і повинно бути ініціалізоване на час оголошення. Такий спосіб використання посилань може призвести до фатальних помилок, які важко виявити через виникнення плутанини у використанні змінних.