Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Вказівники та посилання. Динамічні масиви

Содержание

Вказівник Вказівники – це змінні, значеннями яких є адреси пам’яті. Якщо змінна безпосередньо посилається на своє значення, то вказівник посилається на значення змінної не безпосередньо або непрямо. Він тільки володіє значенням пам’яті імені відповідної йому змінної. Посилання на
Лекція №7. Вказівники та посилання. Динамічні масивиПРОГРАМУВАННЯ ТА ПРИКЛАДНІ ІНФОРМАЦІЙНІ СИСТЕМИ Вказівник	Вказівники – це змінні, значеннями яких є адреси пам’яті. Якщо змінна безпосередньо посилається Опис вказівників	Приклад 1. Опис вказівників.	char *ptrc; //вказівник на змінну символьного типу	float *ptrf; Змінні типу вказівник В мові С++ є операція визначення адреси — &, Змінні типу вказівник для типу Т тип Т* - вказівник на Т Розіменування вказівникаint *a // оголошення змінної типу вказівник*a=4 // розіменування вказівникаПриклад 2.int Посилання 	Посилання (reference) являє собою видозмінену форму вказівника, яка використовується в якості Приклад 3. Використання посилань.int t = 13;int &r = t;// ініціалізація посилання Вказівники та масиви	Вказівники використовуються для роботи з масивами. розглянемо оголошення одномірного масиву:		int Розміщення двовимірного масиву в пам’яті	Двовимірні масиви розташовані в пам’яті так само, як Приклад 4. Ініціалізація масива через вказівникconst short int size = 10;int a[size];int *ptr;ptr = a;cout Динамічне виділення пам'ятіВсі об'єкти в С++ можуть розміщатися в пам'яті або статично Оператор newint *ptr_int = new int(1024);Тут оператор new виділяє пам'ять під безіменний Динамічні масиви	Динамічним називається масив, розмірність якого стає відомою в процесі виконання програми. Приклад 5. Виділення пам’яті під динамічний масив.	Нехай розмірність динамічного масиву вводиться з Приклад 6. Вивести на екран масив із заданою кількістю елементів.int *a;int n;cout n;cout Багатовимірні динамічні об’єкти	Іноді при програмуванні виникає необхідність створення багатовимірних динамічних об’єктів. Приклад 5. Створення двовимірного масиву. int n, m;int** a; //a - вказівник
Слайды презентации

Слайд 2 Вказівник
Вказівники – це змінні, значеннями яких є адреси пам’яті.

Вказівник	Вказівники – це змінні, значеннями яких є адреси пам’яті. Якщо змінна безпосередньо

Якщо змінна безпосередньо посилається на своє значення, то вказівник

посилається на значення змінної не безпосередньо або непрямо. Він тільки володіє значенням пам’яті імені відповідної йому змінної. Посилання на значення змінної через вказівник називається непрямою адресацією.
Вказівники, перед тим як будуть використовуватися в ході програми, повинні бути визначені. Опис змінних типу вказівник здійснюється за допомогою операторів наступної форми:
<тип> *<ім'я вказівника на змінну заданого типу>;

Слайд 3 Опис вказівників
Приклад 1. Опис вказівників.
char *ptrc; //вказівник на

Опис вказівників	Приклад 1. Опис вказівників.	char *ptrc; //вказівник на змінну символьного типу	float

змінну символьного типу
float *ptrf; //вказівник на змінну з плаваючою

точкою
int *countPtr, count;
Такий спосіб оголошення вказівників виник внаслідок того, що змінні різних типів займають різну кількість комірок пам'яті. При цьому для деяких операцій з вказівниками необхідно знати об'єм відведеної пам'яті. Операція * в деякому розумінні є оберненою до операції &.
Спочатку вказівник ініціалізується нульом, або макросом NULL, який знаходиться в директиві процесора стандартної бібліотеки С - , яка включається в інші директиви, наприклад: в директиву

Слайд 4 Змінні типу вказівник
В мові С++ є

Змінні типу вказівник В мові С++ є операція визначення адреси —

операція визначення адреси — &, за допомогою якої визначається

адреса комірки пам’яті, що містить задану змінну. Наприклад, якщо vr — ім’я змінної, то &vr — адреса цієї змінної
В С++ також існують і змінні типу вказівник. Значенням змінної типу вказівник є адреса змінної або об'єкта. Нехай змінна типу вказівник має ім'я ptr, тоді в якості значення їй можна присвоїти адресу за допомогою наступного оператора:
ptr=&vr;
В мові С++ при роботі з вказівниками велике значення має операція непрямої адресації — *. Операція * дозволяє звертатися до змінної не напряму, а через вказівник, який містить адресу цієї змінної. Нехай ptr — вказівник, тоді *ptr — це значення змінної, на яку вказує ptr.



Слайд 5 Змінні типу вказівник
для типу Т тип

Змінні типу вказівник для типу Т тип Т* - вказівник на

Т* - вказівник на Т
змінна Т* містить адресу

об’єкту Т
int k=5;
int *p = &k;


Слайд 6 Розіменування вказівника
int *a // оголошення змінної типу вказівник
*a=4

Розіменування вказівникаint *a // оголошення змінної типу вказівник*a=4 // розіменування вказівникаПриклад

// розіменування вказівника

Приклад 2.
int i = 3; //змінна типу

int
int *p; // вказівние на змінну типу int
p = &i; // вказівник р посилається на змінну i
*p = 10; // змінюється комірка за адресою p

cout << i;

Слайд 7 Посилання
Посилання (reference) являє собою видозмінену форму вказівника,

Посилання 	Посилання (reference) являє собою видозмінену форму вказівника, яка використовується в

яка використовується в якості псевдоніму (другого імені) змінної. У

зв’язку з цим посилання не потребують додаткової пам’яті. Для визначення посилання використовують символ & (амперсант), який ставиться перед змінною-посиланням.

Слайд 8 Приклад 3. Використання посилань.
int t = 13;
int &r

Приклад 3. Використання посилань.int t = 13;int &r = t;// ініціалізація

= t;// ініціалізація посилання на t
//

тепер r синонім імені t
cout << "Початкове значення t:" << t; // виводить 13
r += 10; // зміна значення t через посилання
cout << "\n Остаточне значення t:" << t; // виводить 23

Слайд 9 Вказівники та масиви
Вказівники використовуються для роботи з масивами.

Вказівники та масиви	Вказівники використовуються для роботи з масивами. розглянемо оголошення одномірного

розглянемо оголошення одномірного масиву:
int mas[5];
int *ptr;

Тоді вираз ptr=mas вказує

на перший елемент масиву. Записи mas і &mаs[0] рівносильні. Вираз ptr+1 вказує на mas[1], далі йдуть елементи: mas[2], mas[3], mas[4].


Слайд 10 Розміщення двовимірного масиву в пам’яті
Двовимірні масиви розташовані в

Розміщення двовимірного масиву в пам’яті	Двовимірні масиви розташовані в пам’яті так само,

пам’яті так само, як і одновимірні масиви, займаючи послідовні

комірки пам’яті.
int mas[4][2];
int *ptr;

Слайд 11 Приклад 4. Ініціалізація масива через вказівник
const short int

Приклад 4. Ініціалізація масива через вказівникconst short int size = 10;int a[size];int *ptr;ptr = a;cout

size = 10;
int a[size];
int *ptr;

ptr = a;
cout

<< endl;

cout << "array: " << endl;
for (int i = 0; i *(ptr + i) = rand() % 10;
cout << *(ptr + i) << "\t";
}
cout << endl;
for (int i = 0; i cout << a[i] << "\t";
}

Слайд 12 Динамічне виділення пам'яті
Всі об'єкти в С++ можуть розміщатися

Динамічне виділення пам'ятіВсі об'єкти в С++ можуть розміщатися в пам'яті або

в пам'яті або статично – пам'ять виділяється під час

компіляції, або динамічно – під час виконання програми, за допомогою виклику функцій із стандартної бібліотеки. Статичне розміщення більш ефективне, оскільки виділення пам'яті відбувається до виконання програми, однак воно не є гнучким, оскільки ми повинні заздалегідь знати тип і розмір об'єкту.
Основні відмінності між статичними і динамічними об'єктами такі:
статичні об'єкти визначаються іменованими змінними, і дії над цими змінними проводяться напряму, з використанням їх імен. Динамічні об'єкти не мають власних імен і дії над ними виконуються за допомогою вказівників.
виділення і звільнення пам'яті під статичними об'єктами виконується компілятором автоматично. Виділення і звільнення пам'яті під динамічні об'єкти цілком залежить від програміста. Ця задача досить складна і під час цього виникають помилки.
Для динамічного виділення пам'яті існують оператори new і delete.


Слайд 13 Оператор new
int *ptr_int = new int(1024);
Тут оператор new

Оператор newint *ptr_int = new int(1024);Тут оператор new виділяє пам'ять під

виділяє пам'ять під безіменний об'єкт типу int і ініціалізує

його значенням 1024 і повертає адресу створеного об'єкта. Ця адреса використовується для ініціалізації вказівника ptr_int. Всі дії над таким об'єктом виконуються шляхом розіменування даного вказівника, оскільки явно проводити операції з динамічним об'єктом не можна.

int *ptr_int = new int(1024);
cout << *ptr_int << endl;
*ptr_int = 10;
cout << *ptr_int << endl;
delete ptr_int;


Слайд 14 Динамічні масиви
Динамічним називається масив, розмірність якого стає відомою

Динамічні масиви	Динамічним називається масив, розмірність якого стає відомою в процесі виконання програми.

в процесі виконання програми.


Слайд 15 Приклад 5. Виділення пам’яті під динамічний масив.
Нехай розмірність

Приклад 5. Виділення пам’яті під динамічний масив.	Нехай розмірність динамічного масиву вводиться

динамічного масиву вводиться з клавіатури. Спочатку необхідно виділити пам’ять

під цей масив, а потім створений динамічний масив треба видалити.

int n;
cin>>n; // n — розмірність масиву
int *mas=new int[n]; // виділення пам’яті під масив
delete [] mas; // звільнення пам’яті

В цьому прикладі mas є вказівником на масив з n елементів. Оператор int *mas=new int[n] виконує дві дії: оголошується змінна типу вказівник, далі вказівнику надається адреса виділеної області пам’яті у відповідності з заданим типом об’єкта.
Якщо за допомогою операції new неможливо виділити потрібний об’єм пам’яті, то результатом операції new є 0.

Слайд 16 Приклад 6. Вивести на екран масив із заданою

Приклад 6. Вивести на екран масив із заданою кількістю елементів.int *a;int n;cout n;cout

кількістю елементів.
int *a;
int n;
cout

in your massive:" << endl;
cin >> n;
cout << "Your massive: " << endl;
a = new int[n];
for (int i = 0; i *(a + i) = i + 1;
cout << *(a + i) << endl;
}

delete[]a;

Слайд 17 Багатовимірні динамічні об’єкти
Іноді при програмуванні виникає необхідність

Багатовимірні динамічні об’єкти	Іноді при програмуванні виникає необхідність створення багатовимірних динамічних

створення багатовимірних динамічних об’єктів. Програмісти-початківці за аналогією з поданим

способом створення одновимірних динамічних масивів для двовимірного динамічного масиву розмірності n*k запишуть наступне

mas=new int[n][k]; // Невірно! Помилка!

Такий спосіб виділення пам’яті не дасть вірного результату.

  • Имя файла: vkazіvniki-ta-posilannya-dinamіchnі-masivi.pptx
  • Количество просмотров: 84
  • Количество скачиваний: 0