Масивите са една от най-често използваните форми за съхранение на данни в процеса на работа на програмата. Те ви позволяват да организирате елементи от същия тип в подредена последователност и да получите бърз достъп до тях по индекс. Много често, когато разработвате приложения на мощни и гъвкави езици за програмиране, които позволяват директен достъп до паметта, като 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 се изчислява при компилация време, в точката, където се извършва изчислението, информацията за обема на масива и неговите елементи трябва да бъде налична изрично. С други думи, невъзможно е да се определят параметрите на масив с неизвестен размер чрез неговата външна декларация.
Стъпка 4
Определете размера на масива по време на изпълнението на програмата, като използвате известния знак за нейното прекратяване. Един от подходите, който позволява съхраняване и предаване на данни под формата на масиви с неопределена дължина, е да се определи специална стойност за знак, показващ завършването на последователност от данни. Например еднобайтовите низове в С стил, които са масиви от символи, трябва да завършват със стойност 0, пакетираните масиви от С низове с променлива дължина са с нулев край, а масивите на указателите трябва да бъдат завършени с нула.
Стъпка 5
За да определите размера на масив, представен по този начин, сканирайте го елемент по елемент, докато намерите крайния елемент. Увеличавайте инициализирания с нула брояч по време на сканирането. Или увеличете стойността на показалеца към елемент на масив и след сканиране изчислете разликата между указателите към текущия и първия елемент.
Стъпка 6
Получете размера на динамичен масив, представен от рамка или обект на библиотека, като извикате неговия метод. Всички класове, които капсулират функционалността на такива масиви, имат методи за получаване на текущия брой елементи. Например класът на std:: vector шаблон на стандартната библиотека C ++ има метод за размер, класът QVector на Qt рамката има метод за броене, а аналогичният клас CArray на MFC има метод GetCount.