Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Розміщення одномірного масиву в пам’ятіСодержание книги
Поиск на нашем сайте Для C++ ім’я масиву є дійсною адресою, по якій в пам’яті знаходиться перший елемент масиву. Припустимо, що ви визначаєте масив з ім’ям amo:
int amo[6]={4,1,3,7,9,2};
На рисунку 3 показано, як масив розміщується в пам’яті.
Рис.3. Розміщення масиву amo у пам’яті.
Відповідно до рисунку масив починається з адреси 4050, реальна адреса змінних встановлюється під час завантаження скомпільованої програми. Можна звертатися до масиву за допомогою звичайних правил з індексами або за допомогою зміни адреси масиву. Записи amo[3] і (amo+3)[0] ідентичні. У кожній із таких рядків відбувається звертання до 4-го елемента масива. (amo+0)[3] (amo+2)[1] (amo-2)[5] (1+amo)[2] При виведенні рядків із символьних масивів робота з їхніми елементами шляхом зміни адрес більш корисна, ніж процедура з масивами цілих чисел. Приклад:
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
Особливості: – Незважаючи на те, що C++ автоматично не заносить у пам’ять нулі (або які-небудь інші значення), якщо ви під час оголошення ініціалізуєте декілька елементів (але не усе), інші заповнюються нулями. – На відміну від інших мов, C++ дозволяє вам привласнити значення незарезервовані членам масиву. Але це не варто робити, тому що ви зіпсуєте інші дані або код. Так не можна: Так можна int cout[]={1,2,3}; – Використання визначальних констант (#define) має переваги. При недостачі елементів у масиві можна змінити тільки один рядок у #define.
Багатомірні масиви і їхнє розміщення в пам’яті Багатомірний масив – це масив із більш ніж одним індексом. Одномірні масиви – це список значень, а багатомірні використовуються для представлення даних у вигляді таблиць. Визначення багатомірних масивів
int a[5]={8,5,3,25,41};//одномірний int aa[2][4] = // двомірний { {4,3,2,1}, {1,0,5,4} };
Багатомірні масиви (якщо вони не глобальні) не ініціалізуються під час оголошення, якщо ви самі не привласните їм які-небудь значення при оголошенні або пізніше в програмі. Як і у випадку одномірного масиву, якщо ви ініціалізуєте один або більше елементів, але не усе, інші заповнюються нулями. Приклад: float ss[3][4][2]={0.0}; всі елементи масиву заповнюються нулями.
Подивимося, як багатомірний масив розглядається компілятором. На рисунку показано, яким чином розміщується в пам’яті таблиця розміром 4 на 4, тобто масив arr[4][4] (рис. 4.). Рис.4 Розміщення двовимірного масиву в пам’яті Вкладені цикли.
Оператор for є гарним засобом організації доступу до кожного елемента багатомірної таблиці
for (row=0;row<2;row++) for (col=0,col<3;col++) cout <<row<" "<<col<<"\u";
Приклад виведення цін на дискети: Комп’ютерна компанія продає дискети 3.5 і 5.25 дюйма. Кожна дискета буває однієї з 4-х ємкостей: односторонніми, подвійної щільності, двосторонніми подвійної щільності, односторонніми підвищеної щільності, двосторонніми підвищеної щільності.
#include <iostream.h> #include <iomanip.h>
Void main() { int row, col; float disk[2][4] = {{2.3, 2.75, 3.2, 3.5}, {1.75, 2.1, 2.6, 2.95}}; cout.setf(ios::fixed); cout.setf(ios::showpoint); cout << "\tSingle sided,\tDouble sided," << "\tSingle sided,\tDouble sided,\n"; cout << "\tDouble density\tDouble density" << "\tHigh density \tHigh density \n"; for (row = 0; row < 2; row++) { if(row == 0) cout << "3.5\" \t"; else cout << "5.25\"\t"; for (col = 0; col < 4; col++) cout << "$" << setprecision(2) << disk[row][col] << "\t\t"; cout << "\n"; } }
Результат:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-10; просмотров: 243; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.006 с.) |