Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ Metod_new.doc
Скачиваний:
3
Добавлен:
10.11.2019
Размер:
939.52 Кб
Скачать

3. Символьні масиви і рядки

Строкових змінних у C++ немає, для цього використовуються масиви символів (символьні масиви).

Припустимо необхідно зберегти ім’я людини, вік, зарплату. З віком і зарплатою проблем немає:

int age;

float salary;

Змінної строкової немає, але можна створити масив символів:

char name[15];

У пам’яті резервується місце під масив символів.

Під час оголошення нашого масиву можна привласнити значення.

char name[6] = “Маша”;

У пам’яті ЕОМ:

[0]

М

[1]

а

[2]

Ш

[3]

А

[4]

\0

Можна одержати доступ до визначеного елемента масиву:

name[0] = ’П’

У пам’яті ЕОМ:

[0]

П

[1]

А

[2]

Ш

[3]

А

[4]

\0

При виведенні результату можна зазначити тільки ім’я рядку:

cout<<name; //Результат: Паша

Можна оголосити масив символів так:

char cc[] = {’a’, ’b’, ’c’};

Цей масив не може бути рядком, просто він містить три різних символи.

char bb = cc[1]; // Змінній bb привласнено

// значення ’b’

cout<<сс;

ПОМИЛКА! Наприкінці ланцюжка символів немає ASCII-нуля, виведення выдбуватиметься доти, поки не зустрінеться ’\0’. Тому може виводитися дуже довгий рядок.

Програма помилкова.

void main()

{

char name[20];

name = “ Петя ”; //Не можна імені масиву

//привласнити значення, що

//можливо тільки при

//оголошенні.

}

Для ініціалізації масиву існує 5 основних засобів. 3 з них ініціалізуються під час оголошення.

#include <iostream.h>

#include <string.h>

void main()

{

// 1-ий засіб

char f1[] = “Привіт”;

// 2-ий засіб

char f2[7] = “Привіт”;

// 3-ій засіб

char f3[] = {’П’,’р’,’и’,’в’,’і’,’т’,’\0’};

// 4-ий засіб

char f4[7];

//використання бібліотечної функції

strcpy(f4, “Привіт”);

// 5-ий засіб

char f5[7];

f5[1]= ’П’;

f5[2]= ’р’;

f5[3]= ’и’;

f5[4]= ’в’;

f5[5]= ’і’;

f5[6]= ’т’;

f5[7]= ’/0’;

}

4. Директиви препроцесора

Директиви препроцесора - команди для препроцесора. Вони не є командами С++. Починаються зі знаку #, наприкінці “ ; ” не ставиться Директиви препроцесора використовуються до компіляції програми.

Приклад:

#include <iostream.h>

#define age 28

#define massage “Привіт! ”

Директива #include використовує 2 формати:

#include <файл>

#include “файл”

Кутові дужки вказують препроцесору шукати файл, який включається у зазначених каталогах (у нашому випадку в зазначеному каталозі IDE). Звичайно це каталог INCLUDE. Якщо зазначені (“ ”), то пошук файла здійснюється в каталозі, де знаходиться вихідний текст, а потім, якщо він не буде знайдений, то в тих же каталогах, що й у випадку з кутовими дужками.

Препроцесор цілком вставляє текст зазначеного файла замість директиви #include.

Директива #include частіше усього використовується для включення заголовних файлів, (h-файли). У цих файлах описується, як інтерпретувати бібліотечні функції, використовувані в програмі. Наприклад: iostream. h - містить необхідну для компілятора інформацію про бібліотечні оператори потокового введення-виведення cout, cin, а також про інші бібліотечні функції, що забезпечують введення - виведення.

Директива #define - призначення: знайти і замінити, наприклад:

#define DD 28

По всьому тексті перед компіляцією препроцесор змінює х1 на b+c.

Приклад:

#include <iostream.h>

#define x1 (b+c)

#define x2 (x1+x1)

void main()

{

int b=2;

int c= 3;

int e = x2; //b+c+b+c

cout <<e; //10

}

Щоб не плутати аргументи #define із змінними у програмі, їх виділяють заголовними буквами. В основному #define використовується для визначення констант. Альтернативно, оголошення констант може відбуватися так:

сonst float c=10.2;

const char d = ’A’;

Ці константи видимі тільки усередині блоку { }.

Таким чином, директива #define є чудовим засобом для визначення цифрових і строкових констант.

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