Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програмування.docx
Скачиваний:
42
Добавлен:
05.03.2016
Размер:
1.55 Mб
Скачать

28.Застосування вказівників, та основні операції над ними.

Спеціальними об’єктами у програмах на мовах С та С++ є вказівники. Існують два типи вказівників: вказівники-змінні та вказівники-константи. Значеннями вказівників служать адреси дільниць пам’яті, відведених для об’єктів конкретних типів. Саме тому у визначеннях та оголошеннях вказівників завжди присутні позначення відповдного типу, що дає змогу за допомогою вказівника одержати доступ до сього об’єкту, що зберігається.

Вказівники діляться на дві категорії – вказівники на об’єкти та вказівники на функції, що передбачає різні всластивості та правила використання.

Вказівники на обєкти.

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

type *імя_вказівника;

де type – позначення типу; імя_вказівника – ідентифікатор; * - унарна операція розкриття посилання ( операція розйменування; операція звернення за адресою), операндом якої повинен бути вказівник ( саме тому слідом за “*” записане імя_вказівника ).

Признаком вказівника при розгляді визначення чи оголошення служить символ “*”, вміщений перед іменем, що означає “вказівник на об’єкт даного типу. Таким чином, при потребі визначити кілька вказівників на об’єкти одного типу цей символ записують перед кожним іменем.

Операції над вказівниками можна згуртувати таким чином:

  • операція розйменування чи доступу за адресою (*);

  • перетворення типів (приведення типів);

  • надання;

  • одержання значення адреси (&);

  • додавання та віднімання (адитивні операції);

  • інкремент чи автозбільшення (++);

  • декремент чи автозменшення (--);

  • операції відношення (операції порівняння).

29.Засоби перед процесорної обробки #define та #include. #define

define використовується для оголошення констант чи макровизначень. Наприклад:

    #define <macro> <replacement name>

 

 

#define FALSE 0

#define TRUE !FALSE

Також можна записувати невеликі функції використовуючи #define. Наприклад:

   #define max(A,B) ( (A) > (B) ? (A):(B))

Це означає, що де би непоставити рядок max(C,D) цей текст буде замінено таким рядком як оголошено зверху. Отхе, якщо в коді написати щось таке:

   x = max(q+r,s+t);

то після передпроцесора ми отримаємо, якщо на цей код можна було би подивитись:

   x = ( (q+r) > (r+s) ? (q+r) : (s+t));

Ще один приклад #define:

#define Deg_to_Rad(X) (X*M_PI/180.0)

/* перетворення градусів в радіани */

 

#define LEFT_SHIFT_8 <<8

#Include

Ця директива включає додаткові файли в код. У неї є 2 форми:

#include <file> або #include ``file''

<file> вказує компілятору де знаходяться системні файли, а також назву цих файлів. UNIX-системи зберігають файли у директоріїusrinclude.

``file'' виконує те саме, що і вищеописаний, але використовується для модулів написаних вручну (так прийнято для підвищення читабельності коду).

30. Поняття про символи і стрічки на мові Сі.

Символи мови - це основні нероздільні знаки, за допомогою яких описуються програми і дані.При написанні програм застосовуються спеціальні символи:

+ плюс

- мінус

* зірочка (знак множення)

/ знак ділення

%-остача від ділення(10%3=1)

= дорівнює

> більше

< менше

&& і

|| або

! запереченя

# номер

$ знак грошової одиниці

[ ] квадратні дужки

( ) круглі дужки

{} фігурні дужки

. крапка

, кома

: двокрапка

; крапка з комою

>> зсув в право

<< зсув в ліво

' апостроф

^ хоч

@ комерційне а

проміжок

Комбінації спеціальних символів можуть утворювати складені символи:

= присвоювання

<> не дорівнює

.. діапазон значень

(* *) альтернатива { }

(..) альтернатива [ ]

<= менше або дорівнює

>= більше або дорівнює

Неподільні послідовності символів утворюють слова, що несуть певний зміст у програмі. Слова відділяються розділовими символами, у якості яких може використовуватись проміжок, кома, символ кінця рядка, коментар.