Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Поняття вказівника. Оголошення вказівника

Вказівник містить адресу об’єкта, що дає змогу «непрямого» доступу до цього об’єкта через вказівник. Якщо х – змінна типу int, рх – вказівник, а унарна операція & видає адресу об’єкта, то оператор рх = ; присвоює адресу х змінній рх, тобто рх «вказує» на х. Операцію & застосовують тільки до змінних і елементів масиву, її також не можна застосовувати до регістрової змінної.

Унарна операція * розглядає свій операнд як адресу змінної і звертається за цією адресою, щоб одержати значення змінної. Отже, якщо змінна y типу int, то y = *рх; присвоює y значення того, на що вказує рх. Тому послідовність int x, y; // опис x і y

рх = &х; y = *рх; // опис вказівника

#include <iostream.h> void show_string(char *string){
while (*string != '\0') { cout << *string; string++; }}

void main(void){ show_string( "Учимся программировать на языке C++!"); }

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

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

#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, тобто це все еквівалентні запису однієї і тієї ж ідеї.

 

Динамічна пам'ять. Оператори 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.

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

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

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

double num1 = 3.14;

double &num2 = num1;

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

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

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

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

#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;}

 

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

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

Оголошення

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. стрічки С;

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

2. клас string.

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

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

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

Оголошення

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

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

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

Последнее изменение этой страницы: 2016-08-11

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...