Як визначити розмір масиву

Однією з найбільш часто вживаних форм зберігання даних в процесі роботи програм, є масиви. Вони дозволяють організувати однотипні елементи у вигляді впорядкованої послідовності і отримувати до них швидкий доступ за індексом. Дуже часто при розробці програм на потужних і гнучких мовах програмування, що дають можливість прямого доступу до пам`яті, таких як C ++, потрібно визначити розмір масиву.
Як визначити розмір масиву

Вам знадобиться

  • Компілятор C ++.

Інструкція

1
Визначте розмір масиву на етапі компіляції шляхом його обчислення з використанням оператора sizeof. Даний оператор повертає обсяг пам`яті (в байтах), яку він обіймав переданим йому аргументом. Як аргумент може виступати як змінна, так і ідентифікатор типу. Оператор sizeof повертає кінцевий обсяг пам`яті, займаний об`єктом на етапі виконання програми (з урахуванням, наприклад, налаштувань кордонів вирівнювання полів структур), проте його обчислення проводиться на етапі компіляції.
2


Для визначення розміра масиву за допомогою оператора sizeof, розділіть весь його обсяг на обсяг одного елемента. Наприклад, якщо є таке визначення масиву: Int aTemp [] = {10, 20, 0xFFFF, -1, 16} -то його обсяг може бути обчислений як: int nSize = sizeof (aTemp) / sizeof (aTemp [0]) -
3
Для більш зручного застосування даного методу має сенс визначити макрос: #define countof (a) (sizeof (a) / sizeof (a [0])) Зверніть увагу на те, що, оскільки значення оператора sizeof обчислюється на етапі компіляції, в точці, де виробляється обчислення, інформація про обсяг масиву і його елементів повинна бути доступна явно. Іншими словами, визначення параметрів масиву невідомого розміра по його extern-декларації неможливо.
4



Визначте розмір масиву в процесі виконання програми, використовуючи відомий ознака його закінчення. Одним з підходів, що дозволяють зберігати і передавати дані у вигляді масивів невизначеної довжини, є виділення спеціального значення під ознака, що свідчить про завершення послідовності даних. Так, однобайтові рядки в стилі C, є масивуми символів, повинні закінчуватися значенням 0, упаковані масиви C-рядків змінної довжини завершують двома нулями, а масиви покажчиків - елементом NULL.
5
Для визначення розміра масиву, представленого подібним чином, здійсните його поелементне сканування до виявлення завершального елемента. У процесі сканування нарощуйте значення лічильника, ініціалізувати нулем. Або збільшуйте значення покажчика на елемент масиву, а після сканування обчисліть різницю покажчиків на поточний і перший елементи.
6
отримайте розмір динамічного масиву, представленого об`єктом будь-якого фреймворку або бібліотеки, за допомогою виклику його методу. Будь-які класи, инкапсулирующие функціонал подібних масивів, мають методи для отримання поточної кількості елементів. Так, шаблонний клас std :: vector стандартної бібліотеки C ++ має метод size, клас QVector фреймворка Qt - метод count, а аналогічний клас CArray фреймворка MFC - метод GetCount.


Увага, тільки СЬОГОДНІ!


Оцініть, будь ласка статтю
Всього голосів: 67
Увага, тільки СЬОГОДНІ!