Содержание

Слайд 2


Форма оголошення наступна:         тип * ім’я вказівника ;
де тип -

Форма оголошення наступна: тип * ім’я вказівника ; де тип - найменування
найменування типу змінної, адресу якої буде
містити змінна-вказівник (на яку він буде вказувати).
Вказівник містить адресу першого байту змінної визначеного
типу. Тип змінної, що адресується, і на яку посилається
вказівник, визначає об'єм ОП, що виділяється змінній, та
зв'язаному з нею вказівнику.
Приклад:
char *pc; float *pf;
int ml [5]; /* - ім'я масиву на 5 значень типу int;
ml - покажчик-константа*/

Слайд 3


Константа NULL зі стандартного файлу stdio.h
призначена для ініціалізації вказівників

Константа NULL зі стандартного файлу stdio.h призначена для ініціалізації вказівників нульовим (незайнятим)
нульовим
(незайнятим) значенням адреси.
Базові операції:
Унарні операції & та * :         & ім'я змінної - одержання адреси. Визначає
адресу розміщення значення змінної визначеного типу;        * ім'я-вказівника - отримання значення визначеного
типу за вказаною адресою. Визначає вміст змінної,
розміщеної за адресою, що міститься у даному покажчику.
Це – непряма адресація ( інші назви - "зняття значення за
вказівником" або "розіменування" ).

Слайд 4


Оператор присвоювання значення адреси вказівнику :        Ім'я_змінної_вказівник = & ім'я змінної; Наприклад:

Оператор присвоювання значення адреси вказівнику : Ім'я_змінної_вказівник = & ім'я змінної; Наприклад:
int i, *pi; /* pi -змінна вказівник*/ pi = &i; /* pi одержує значення адреси 'i' */
Одне з основних співвідношень при роботі з
вказівниками – це симетричність операцій адресації та
непрямої адресації. Вона полягає в тому, що: *&х == х,
тобто вміст за адресою змінної х є значення х.

Слайд 5


    Над вказівниками можна виконувати всі операції
порівняння. Приклад:
int *pc,

Над вказівниками можна виконувати всі операції порівняння. Приклад: int *pc, *pnew; if
*pnew;
if ( pc==pnew ) pc=NULL;
До значення вказівника можна додавати (чи віднімати )
довільне ціле число: p=p + k . Результатом буде
збільшена на k*sizeof (базовий тип вказівника p ) нова
адреса. Величина, яка додається до значення вказівника
(чи віднімається) є кратною розміру об’єкта.

Слайд 6

Нетипізовані вказівники

Оголошуються void *p;
Сумісний з усіма вказівниками програми та адресами

Нетипізовані вказівники Оголошуються void *p; Сумісний з усіма вказівниками програми та адресами
усіх
об’єктів. Можна присвоювати значення void –вказівників
вказівникам з довільним типом і навпаки.
Застосовують для оголошення параметрів функцій, що
можуть набувати значення адрес об’єктів різних типів,
а також щоб забезпечити можливість повернення з функції
адреси неозначеного об’єкта.

Слайд 7


Бібліотечна функція malloc ( ), яка виділяє в динамічній
пам’яті

Бібліотечна функція malloc ( ), яка виділяє в динамічній пам’яті ділянки заданого
ділянки заданого обсягу, має тип результату
void * ( повертає адресу першого байта виділеної
ділянки), що дає змогу використовувати її для
розташування в пам’яті об’єктів різних типів
Приклад
char *pst ;
double *par;
pst = malloc ( 300 );
par = malloc ( n * sizeof(double) );

Слайд 8


Вказівник pst отримає адресу першого байта ділянки, а
вказівник par

Вказівник pst отримає адресу першого байта ділянки, а вказівник par – адресу
– адресу першого байта першого елемента
динамічного масиву з n даних, що мають тип double. Можна
виконувати присвоєння
*pst = ‘x’ ;
*(par + 3) = 14.7 ;
Першим символом рядка, на який вказує pst , стане символ
‘x’, а константу 14.7 буде записано як четвертий елемент
масиву дійсних чисел.
Хоча значення нетипізованого вказівника можна
присвоювати довільному іншому вказівникові,
рекомендують застосовувати операцію явного перетворення
типу ( явне перетворення обов’язкове для мови С++)
Имя файла: sl-part.pptx
Количество просмотров: 104
Количество скачиваний: 0