Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторна робота 4.«Одновимірні масиви.Покажчики. Рядки»(4 год.)

Поиск

Ціль роботи: Формування уміння описувати, ініціалізувати масиви, роздруковувати вміст масиву, виконувати прості операції над масивами. Одержання навичок використання покажчиків для звертання до масиву і його елементів.Освоєння прийомів роботи із символами й рядками, застосування бібліотечних функційдля обробки рядків.

Теоретичні відомості

Масиви й покажчики

Зі змінних будь-якого типу можна утворювати масиви. При оголошенні масиву вказується тип даних, ідентифікатор (ім'я) масиву й число елементів масиву у квадратних дужках:

double mas[10]; // Масив з п'яти елементів типу double

Індекси елементів масиву починаються з 0, індекс останнього елемента на одиницю менше числа елементів у масиві. Масив можна ініціалізувати списком значень у фігурних дужках:

int b[4] = {1, 2, 3, 4};

Для звертання до елемента масиву вказується ідентифікатор масиву й індекс елемента в квадратних дужках, наприклад, b[2], mas[5].

Змінна, значенням якої є адреса іншої змінної, називається покажчиком. При оголошенні покажчика перед ідентифікатором записується знак *:

int a, *pa;

– оголошення цілої змінної а й покажчика ра на цілочисельну змінну. Щоб покажчик зв'язати з певною змінною, потрібно покажчику присвоїти адресу цієї змінної:

pa = &a;

У С/С++ ім'я масиву є також покажчиком на масив, що посилається на перший елемент масиву (елемент із індексом 0). Таким чином, адресу першого елемента масиву можна одержати як pa або &a[0]. Значення першого елемента масиву повертається операцією розімену­вання:

int w = *pa;

– зміннійw присвоїли значення змінної, розміщеної за адресою pa, тобто a[0].

Записи «покажчик-зсув» і «покажчик-індекс»

Покажчик масиву посилається на перший елемент. Зміщуючи покажчик, можна звернутися до наступних елементів масиву, наприклад,

W = *(pa+2);

– змінній w присвоюється значення 3-го елемента масиву. Наведений запис – це запис "покажчик-зсув". Дужки обов’язкові, оскільки пріоритет операції * вище, ніж пріоритет +. Адреса елемента a[2], тобто &a[2], може бути записана як pa+2.

Усі елементи масиву можна записати за допомогою покажчиків і зсувів, а запис "покажчик-зсув" можна застосовувати до імені масиву як до покажчика, наприклад.

w = *(a+1)

– змінній w присвоєне значення 2-го елемента a[1].

Покажчики можна проіндексувати точно так само, як і масив. Наприклад, виразpa[1]посилається на елемент масиву a[1]. Даний вираз називається записом "покажчик-індекс".

Наведемо приклад виведення елементів масиву з використанням запису «покажчик-зсув»

int v[3]={1,3,5};

int*p1=v;

for(int i=0;i<3;i++)

cout<<*(p1+i)<<"\t";

Для виведення елементів із використанням запису «покажчик-індекс» в операції cout потрібно записати:

cout <<p1[i]<<"\t";

Рядки як одновимірні масиви

У мові С рядок подається як одновимірний масив змінних типу char, останнім елементом якого автоматично є нульовий символ '\0'. Можливі кілька видів оголошень масиву символів. По-перше, це може бути абстрактний рядок без вказівки розміру масиву:

charname[] = "Andrey";

Тут число елементів масиву визначається автоматично й дорівнює 7 (з урахуванням останнього елемента '\0'). По-друге, масив символів може мати більше елементів, чим містить абстрактний рядок:

char name[10] = "Andrey";

Тут три останніх елементи масиву не використовуються. Нарешті, рядок може бути оголошений за допомогою покажчика. Перед використанням покажчика рядок вже повинен існувати, наприклад:

char name[] = "Andrey";

char *namePtr;

namePtr = name;

Відзначимо, що при присвоєнні покажчику адреси масиву не потрібно використати адресний оператор &, тому що ім'я масиву поводить себе подібно адреси.

Передача рядка у функцію

Якщо потрібно передати в деяку функцію рядок, то передається як параметр ім'я рядка-масиву або покажчик на рядок.

Використання імені масиву. Запишемо визначення функції, що друкує рядок, і виклик цієї функції:

void print(char client[]){

cout << "Name of client: " << client << endl;

}

...

int main(){

char client1[] = "Serg";

...

print(client1);

...

Використання покажчика на рядок. Якщо є покажчик на масив-рядок:

char *client1Ptr= client1;

то можна передати у функцію покажчик:

print(client1Ptr);

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



Поделиться:


Последнее изменение этой страницы: 2016-12-29; просмотров: 296; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.100.40 (0.006 с.)