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

Адреси даних. Вказівники. Динамічна пам'ять

Для розв'язання спецефічних для мови C++ задач потрібно знати не тільки значення змінних, а і її адресу у оперативній пам'яті. Для його визначення є операція:

&<назва даного>

int a = 25;

cout <<"значення змінної а = "<< a << endl;

cout <<"Адрес змінної а = "<<&a;

Вказівники

Вказівник - це змінна, значення якої є адреса. Вона вказує на початок області оперативної пам'яті, де зберігається дане. Вказівники дають змогу оперувати не з її іменами даних, а з її адресами.

<тип даного> *<назва вказівника>

Int *nomer;

float *rist, *prtA, *prtB;

<назва вказівники> = <адреса змінної>;

int n = 10; float st1, st2, st3;

nomer = &n

rist = &st1;

rist = &st3;

Отримати містиме комірки, на який вказує вказівник можна за допомогою конструкції

*<вказівник>

Динамічна пам'ять, її принципи і організація полягає у тому, що для змінних надається пам'ять за необхідністю(за вказівкою програміста). Далі ці дані опрацьовують і в потрібний момент пам'ять вивільняють. Такі змінні називають динамічні. Записується:

<тип вказівника> *<назва> = new <тип змінної>

Дія команди. Для відповідного типу змінної автоматично надається необхідна неперервна ділянка пам'яті. Команда new повертає обсяг цієї ділянки, а вказівник вказує на її початки.

int *prt = new float(3,14)

Вивільняють пам'ять за допомогою команди

delete <назва вказівника>

або занулюємо

<назва> = NULL

#include <iostream.h>

Void main()

{

int *c1 = new int;

*c1 = 5;

int *c2 = new int(7);

cout << *c1 <<"\t"<< *c2 <<"\n";

c1 = c2;

cout <<*c1 <<"\t"<< *c2 <<"\n";

delete (c2);

cout << *c1 <<"\n";

}

Дано координати 3-х вершин трикутника - А(1,1), В(2,2), С(-1,2)

#include <iostream.h>

#include <math.h>

#include <conio.h>

Void main()

{

clrscr();

float x1, x2, x3, y1, y2, y3;

cout <<"Уведіть точку А";

cin >> x1 >> y1;

cout <<"Уведіть точку В";

cin >> x2 >> y2;

cout <<"Уведіть точку С";

cin >> x3 >> y3;

float a, b, c, x, y, mb, p, s, r;

a = sqrt(pow((x3-x2),2) + pow((y3-y2),2));

b = sqrt(pow((x1-x3),2) + pow((y1-y3),2));

c = sqrt(pow((x1-x2),2) + pow((y1-y2),2));

x = (x1 + x3)/2;

y = (y1 + y3)/2;

mb = sqrt(pow((x - x2),2) + pow((y-y2),2));

p = (a + b + c)/2;

s = a * b * c / (4 * s);

cout <<"mb = "<< mb <<"\n";

cout <<"r = "<< r <<"\n";

getch();

}

Логічний вираз - це засіб записування умов у задачах відшукання даних, що задовольняють деякими критеріями. Логічний вираз набуває значень true i false.

Вирази

Значення

Вирази

Значення

!true

false

!false

true

true&&true

true

true||true

true

true&&false

false

true||false

true

false&&true

false

false||true

true

false&&false

false

false||false

false

a = 1; b = 7

Вирази

Значення

Вирази

Значення

a == b

false

a >-3 && a <= 2

true

!(a == b)

true

a >= 0 && b <= 4

false

a >= b

false

b < 9 || b > 15

true

a != b

true

!(a<1 ||b >= 10)

true

a+6 == b

true

a != b || a+15 > b && b < 0

true

a < b = 1

true

(a != b || a + 15 < b) && b < 0

false

2

true

0

false

b

true

!b

false