int *b; //Створюємо вказівник b b = main *b = 1224
*b = 2; // Така вказівка небезпечна, так як пам’ять під *b не виділено
// b = main *b = 2
b = new; //Створюємо динамічну змінну в купі. Вказівник b містить її адресу
//b = 9131:0004 *b = 27966
*b = 5; // Змінюємо значення динамічної змінної b = 9131:0004 *b = 5
delete b; //Знищуємо динамічну змінну, на яку вказує b (вивільняємо
//динамічну пам’ять)
b = 0; //Занулюємо вказівник b b = NULL *b =4200
}
При створенні вказівника b (int *b) він вказує на деяку випадкову змінну (зі значенням 1224). Після занулення його, він теж вказує на деяку іншу випадкову змінну (зі значенням 4200)
Висновок:
1. Якою б не була змінна, вона замає в пам’яті деяку ділянку, яка має адресу. Адреса складається з двох значень, що визначають адресу сегмента та зміщення.
2. «Взяти» адресу можна за допомогою команди &.
3. Значенням вказівної змінної є адреса деякої іншої змінної.
4. Змінні поділяються на: - статичні (до неї можна звернутися як по адресі – через деякий вказівник, так і по імені) - динамічні (вони імені не мають, до них можна звернутися лише по адресі, тобто через деякий вказівник).
5. Динамічна змінна розміщена в динамічній пам’яті – в купі, статична – в статичній.
6. Динамічну змінну можна створити командою new та знищується командою delete в довільній точці програми.
3. Нетипізовані вказівні змінні.
Розглядаючи динамічні змінні та змінні-вказівники, ми описували вказівник на деяку динамічну змінну наприклад цілого типу так: int *a, де а – вказівник на деяку динамічну змінну цілого типу. Значенням змінної-вказівника є адреса динамічної змінної, цілого типу.
Але, оскільки адреси як змінних цілого типу, так і змінних інших типів мають один і той же формат (складаються з пари чисел, представлених у 16-вій системі), то очевидно одна і та ж вказівна змінна може містити як адресу динамічної змінної цілого типу, так і адресу динамічної змінної довільного іншого типу. Такі змінні-вказівники називаються нетипізованими.
При описі нетипізованої вказівної змінної замість типу вказується службове слово void.
Наприклад, запис void *a означає, що вказівник а може містити адресу деякої динамічної змінної довільного типу.
Тема. Динамічні масиви . Створення і використання динамічних масивів. Вказівники і стрічки.