Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
All.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
167.23 Кб
Скачать

46)Арифметика вказівників

З показниками на дані можливі арифметичні операції можуть бути додавання і віднімання. приклад:

 #include <iostream>

  using std::cout;

  int main(void) {

int a = 0;

int b = 0;

   ptrdiff_t inInts = &a – &b;

ptrdiff_t inChars =

reinterpret_cast<char*>(&a)

– reinterpret_cast<char*>(&b);

cout<< inChars << ‘ ‘<< inInts << ‘\n’;

return 0;}

Одиниця виміру різниці між покажчиками - це кількість елементів указуваного типу. У наведеному прикладі у змінній inInts буде різниця в int-ах, а в inChars - в char-ах. Треба зауважити, що даний код може виводити на екран різні числа в залежності від:

1.компілятора2.розміру int3.виду збірки (debug / release)

Крім вирахування (обчислення різниці покажчиків), до покажчиків можна застосовувати операції додавання і віднімання з цілим числом. Якщо в наведеному вище прикладі скласти & b і inInts, то ми отримаємо & a.

Таким чином з двома покажчиками можна виробляти такі арифметичні операції:

- ==! = <> <=> =

а з одним покажчиком і числом такі:

+ - + + - + = - =

З арифметикою покажчиків пов'язана операція доступу до елементу масиву за індексом. У наведеному нижче прикладі, всі змінні отримають значення елемента масиву з індексом 3, тобто це все еквівалентні запису однієї і тієї ж ідеї.

47)Динамічна пам'ять. Оператори new і delete

Для роботи з динамічною памяттю використовують 2 операції – виділення і звільнення. Для виділення памяті використовують оператор “new”, який виділяє память для обєкту заданого типу і повертає вказівник на виділений блок памяті.

Char *str=new char [10]

За звільнення памяті відповідає оператор “delete”. Оператор “delete”, як аргумент приймає динамічну змінну(вказівник) і звільняє пам'ять на яку вказівник вказує.

Int *ptr = new int;

Char *str = new char[10]

Delete ptr;

Delete []str;

Кількість операторів new практично повинна бути рівною кількості операторів delete.

48. Поняття посилання. Оголошення та ініціалізація посилання

Посилання - це інше ім’я об’єкта(ярлик).

Оголошення посилання:

double num1 = 3.14;

double &num2 = num1;

Посилання повинно бути зразу ініціалізоване після оголошення. Найбільш поширене використання посилань – використання у якості параметрів ф-ї

49. Використання посилання у якості параметру функції

Найбільш поширеним використання посилання це використання з якості параметрів ф-ції(передача параметрів за посиланням).

Функція з параметром-посилання.

#include <iostream.h>

void sqr(int &);// прототип функції

int main() {

int t = 3;

cout << "Почат знач t:" << t; // буде 3

sqr(t);

cout<<"\nкінцеве знач t:" << t; // буде 9

return 0;}

void sqr(int&x){

x*= x;}

50. Оголошення та створення динамічного масиву

Динамічним називають масив, розмірність якого стає відомою в процесі виконання програми.

Оголошення

Int * Arr = new int [size]

Створення

1.Створити об'єкт класу-оболонки динамічного масиву, при цьому конструктор автоматично виділити пам'ять зазначеного розміру.2.Підключити бібліотеку динамічного масиву за допомогою команди # include. Для створення об'єкта використовувати клас vector. Переміщення по масиву відбувається так само, як і в звичайному випадку, за допомогою індексів. Особливими тут є функції додавання та видалення нових елементів, а також ряд допоміжних методів.

51. Робота з багатовимірним динамічним масивом

Виділяється динамічна пам’ять heap. Для роботи з динамічною пам ‘ятю використовують дві операції : виділення та звільнення. Для виділення пам’ яті використовують оператор new, який виділяє пам ‘ять для об ‘ єкту даного типу і виділяє вказівник на виділений блок динамічної пам ‘яті. Динамічна пам ‘ять обмежена, і тому коли не можна виділити пам‘ять, то new замість вказівника повертає 0. Оператор delete, як аргумент приймає як динамічну змінну і звільняє пам’ять на яку вказує даний вказівник.

Int *ptr = new int;

Delete ptr;

Кількість операторів new і delete має бути одинакова. Багатовимірний динамічний масив має доступ до елемента масиву.

52. Поняття та види стрічок

Стрічка – це послідовність символів, які зберігаються в пам’яті один за одним.

Види:

  1. стрічки С;

Цю стрічку використовують як масив.

  1. клас string.

Цю стрічку використовують як просту змінну.

53. Оголошення та ініціалізація С-стрічки

Ологолошується як масив символів.

Оголошення

char cat [5] ={‘b’, ‘f’, ’k’, ’a’, ’\0’};

Стрічка в мові програмуванні С має закінчуватись ось таким символом ’\0’- це є символ кінця стрічки.

Ініціалізація у С-стрічці- це оголошення змінної, у нашому випадку те що знаходиться у фігурних дужках.

54. Функції для роботи з С-стрічками

Strcpy - копіювання стрічки.

Strcat - об’єднання стрічок

Strtook - розбити стрічку на слова

Strstr – знай. Частину стрічки

Strlen – отрим. Розмір стрічки

Strrchr – знай. Ост. Поз. Сим. В стрічці

55. Основні операції над стрічками

В С++ можна додавання, присвоєння.

60) Cтруктура-це користувацький тип даних,який дозволяє об’єднати різний тип змінних.

1.Оголошення структури:

struct student {

string name , group;

bool male;

int age;

float rating;};

2.створення змінної

struct student {

} st;

61) Доступ до окремого елемента структури забезпечується оператором вибору : . (прямий селектор) або ->(не прямий селектор).

62) Масив структур- він подібний до звичайних масивів але його елементи мають структурований тип

Оголошення масива структур:

struct Data{

Int day;

Int month;

Int year;

}Date;

Date arr[100];

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

Приклад:Arr[25].day=24

Arr[12].month=12

63) Доцільним є також зв’язок структур та вказівників який дозоляє обійти деякі складні моменти.

Приклад:

64) Створення і підтримання динамічних структур даних потребує динамічного розподілу пам’яті, тобто можливість у процесі виконання програми збільшувати ємність пам’яті для зберігання нових вузлів і звільнення пам’яті, у якій немає потреби.

Student*KN_11;

KN_11=new student[34];

Student*KN_11=new_student[34];

Cin>>KN_11[0].name;

KN_11.age=18

Delete[]st;

KN_11->name;

KN_11[0].name;

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