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

Однією з найбільш часто вживаних форм зберігання даних в процесі роботи програм, є масиви. Вони дозволяють організувати однотипні елементи у вигляді впорядкованої послідовності і отримувати до них швидкий доступ за індексом. Дуже часто при розробці додатків на потужних і гнучких мовах програмування, що дають можливість прямого доступу до пам'яті, таких як 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.
Переглядів: 2365

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