Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпори частина 1.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
248.38 Кб
Скачать
  1. Умовна компіляція програми. Директиви умовної компіляції. Приклади.

Умовна компіляція це вибіркова компіляція лише тих частин програми, які задовільняють певні умови. Для умовної компіляції використовуються такі директиви препроцесора: #if, #else, #endif, #ifdef, #ifndef.

Синтаксис директиви умовної компіляції:

if - заголовок

текстові рядки для випадку “істина”

#else

текстові рядки для випадку “не істина”

#endif

if - заголовок містить умови, на основі яких здійснюється перевірка. Управляючий рядок if - заголовок має 3 форми:

1. #if вираз, що має постійне значення;

2. #ifdef ідентифікатор;

3. #ifndef ідентифікатор.

В першій формі вираз визначається значенням нуль або не нуль (“істина”, “не істина”.

В другій формі значення “істина” відповідає умові, якщо ідентифікатор був визначений в директиві #define.

В третій формі значення “істина” відповідає умові, якщо ідентифікатор або не був визначений в директивою #define, або був відмінений директивою #undef.

Для прикладу умовної компіляції приведемо такий фрагмент програми:

#ifndef MAX_STK

#define MAX_STK 128

#endif

Ідентифікатор MAX_STK має значення по замовчуванню, якщо не буде заданий користувачем.

Директива if подібна до оператора if у мові C:

#if SYS= = “IBM”

#include “ibm.h”

#endif

Якщо вираз SYS= = “IBM” істина, то під’єднується файл “ibm.h”.

  1. Поняття вказівника. Оголошення та ініціалізація. Мета використання.

У мові C++ передбачені можливості роботи з симво­лічними адресами пам'яті, у всякий розташований об'єкт про­грами. Для цього вводитися поняття вказівника.

Константа типу вказівник визначає безпосереднє значення ад­реси будь-якої змінної, тобто оперативної пам'яті. Вказівник- змінна (або просто вказівник) — це змінна, призначена для збері­гання адреси об'єкта певного типу. У мові C++ визначені дві спеціальні операції для доступу до змінних через вказівники: операція & і операція *. Результатом операції & є адреса об'єкта, до якого операція застосовується. Якщо ім'я змінної, використо­вуваної у програмі prt, то, додаючи перед ім'ям операцію визна­чення адреси &prt, отримаємо адресу цієї змінної пам'яті. Опера­тор y=&prt; присвоює адресу prt змінної у. Операція * — це операція звернення до змісту пам'яті за адресою, що зберігається в змінній вказівнику, або рівному вказівнику-константі. Наприк­лад, оператор х=*у; присвоює х значення змінною, записаною за адресою у. Якщо y=&prt; і х=*у;, то x=prt;.

Змінна типу вказівник може приймати у процесі виконання програми будь-які значення констант типу вказівник. Вона по­винна бути обов'язково описана у такій формі: <тип змінної> * <ім'я змінної>;

де тип — це будь-який допустимий тип (базовий тип вказів­ника), а ім'я — це ім'я змінної-вказівника. Базовий тип вказівни­ка визначає тип змінної, на яку вказує вказівник.

Наприклад, int *р; змінна р являє собою вказівник на тип ці­лий тип.

char *t; оголошується вказівник з ім'ям t, який вказує на змін­ну типу char.

Можна змішувати оголошення вказівників і звичайних змін­них в одному рядку. Наприклад, int х, *у;

Оголошує х як змінна цілого типу, а у — як вказівник на ціло- чисельний тип.

  1. Вказівний тип у С/С++. Операції над вказівниками.

Кожне визначення змінної чи константи програми супроводжується виділенням ділянки пам’яті для неї. Розмір ділянки залежить від типу даних. Кожен байт оперативної памяті має унікальний номер(ціле число 1). Номер комірки(байта памяті) називають ще її адресою. Адреса певного типу це адреса самого першого байта даного(самого лівого).

Нехай маємо наступне визначення int number =123; // 4 b

Щоб отримати адресу даного користуймося унарною операцією – амперсант, позначається &. Cout<<&number; //1000.

Змінні, які можуть містити адреси називаються Вказівники.

Вказівники поділяють на 2 групи 1)типовані(тип*) 2)безтипові - void вказівники(войд*) універсальні

Типізовані вказівники пов’язані з певним типом, тобто можуть містити адресу тільки даного певного типу. Вказівники на int можуть зберігати адреси змінних типу інт. Інт*.

Войд вказівники не пов’язані з певним типом і тому можуть зберігати адресу даного будь-якого типу. Войд*

Визначення типізованого вказівника має вигляд:

Тип*Імя вказівника1*Імя вказівника 2;

Int *a(вказівник), b(типова змінна), c(типова змінна);

Унарна операція зірочка називається розіменування вказівника.

Операція розіменування дозволяє отримати доступ до даного через вказівник на ньому.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]