![]() КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Програма помилкова.
void main() { char name[20]; name = "Петя"; //Не можна імені масиву //привласнити значення, що //можливо тільки при //оголошенні. }
Для ініціалізації масиву існує 5 основних засобів. 3 з них ініціалізуються під час оголошення.
#include <iostream> using namespace std;
void main() { // 1-й засіб char f1[] = "Привіт";
// 2-й засіб char f2[7] = "Привіт";
// 3-й засіб char f3[] = {'П','р','и','в','і','т','\0'};
// 4-й засіб char f4[7]; //використання бібліотечної функції strcpy(f4, "Привіт");
// 5-й засіб char f5[7]; f5[0]= 'П'; f5[1]= 'р'; f5[2]= 'и'; f5[3]= 'в'; f5[4]= 'і'; f5[5]= 'т'; f5[6]= '\0'; }
При виведенні рядків із символьних масивів робота з їхніми елементами шляхом зміни адрес більш корисна, ніж процедура з масивами цілих чисел. Приклад:
char nam[]={'T','e','d','\0','E','v','a','\0', 'S','a','m','\0'};
cout <<nam; //Надрукує Ted cout <<nam+4; //Надрукує Eva cout <<nam+8; //Надрукує Sam Використання вказівок на символи. Розглянемо 2 рядки:
char cara[]="Привіт"; char *cp = "Москва"; Після початкової ініціалізації у вказівці на символьну змінну міститься адреса першого символу рядка.
cara = "Привіт"; //Невірно cp = "Київ"; //Можна: занесення у вказівку //нового рядка. Приклад:
#include <iostream> using namespace std;
void main() { char name[20] = "Іван Петров"; char *t = name; strcpy(t+5,"Сидоров"); cout <<t; //Іван Сидоров }
Запам’ятовування масивів рядків. char names[5][20]= { {"Наташа"}, {"Георгій"}, {"Ан"}, {"Оля"}, {"Льоша"} };
Таблиця займає в пам’яті багато місця. Нераціонально використовується пам’ять. Для усунення проблем раціонального використання масиву символьних вказівок, кожна вказівка містить адресу рядка в пам’яті, і ці рядки можуть мати різну довжину.
Рядки можуть знаходитися в будь-якому масиві пам’яті
cout << *names; //Друкує Наташа cout << *(names+1); //Георгій
Робота з вказівками на рядки набагато ефективніше, ніж з самими рядками. Наприклад, сортування рядків за допомогою масиву вказівок виконується швидше. Під час сортування змінюються тільки вказівки, а не вміст рядків. Приклад: При запровадженні чисел від 1 до 7 на екран виводиться день тижня
#include <iostream> using namespace std;
void main() { char *dn[]= { "Понеділок", "Вівторок", "Середа", "Четвер", "П’ятниця", "Субота", "Неділя" }; int day_num; do { cout <<"Введіть день тижня(1-7) "; cin >> day_num; } while ((day_num < 1)||(day_num > 7)); cout << *(day_num - 1 + dn) << "\n"; }
Контрольні питання
1. Що таке вказівка? 2. Як оголосити вказівку та взяти адресу змінної? 3. Призначення вказівки void *. 4. Як привести вказівку до потрібного типу даних? 5. Призначення операторів new, delete та delete []. 6. Що таке посилання? 7. Призначення та використання посилань. 8. Що таке масив? 9. Які існують засоби ініціалізації одновимірного масиву? 10. Організація введення/виведення масиву. 11. Наведіть приклад введення/виведення одновимірного масиву. 12. Як розміщується одновимірний масив в пам’яті? 13. Що таке багатовимірний масив? 14. Як знайти мінімальний та максимальний елементи масиву? 15. Як вказівка пов’язана з одновимірним масивом? Використання арифметичних операцій з вказівками. 16. Яким чином перетворити двовимірний масив до одновимірного? Наведіть приклад. 17. Яким чином перетворити одновимірний масив до двовимірного? Наведіть приклад.
|