Raրագրերը ծրագրի շահագործման ընթացքում տվյալների հաճախակի օգտագործվող ձևերից մեկն են: Դրանք թույլ են տալիս կազմակերպել նույն տեսակի տարրերը դասավորված հաջորդականությամբ և արագորեն օգտվել դրանցից ՝ ըստ ինդեքսի: Շատ հաճախ, հզոր և ճկուն ծրագրավորման լեզուներում ծրագրեր մշակելիս, որոնք թույլ են տալիս ուղղակիորեն մուտք գործել հիշողություն, ինչպիսին է C ++ - ը, անհրաժեշտ է որոշել զանգվածի չափը:
Անհրաժեշտ է
C ++ կազմող:
Հրահանգներ
Քայլ 1
Որոշեք զանգվածի չափը կոմպիլյացիայի ժամանակ `այն հաշվարկելով` օգտագործելով sizeof օպերատոր: Այս օպերատորը հետ է վերադարձնում իրեն փոխանցված փաստարկով զբաղեցրած հիշողության քանակը (բայթերով): Փաստարկը կարող է լինել կամ փոփոխական կամ տիպի նույնացուցիչ: Օպերատորի չափը վերադարձնում է ծրագրի կատարման փուլում օբյեկտի կողմից զբաղեցրած հիշողության վերջնական քանակը (հաշվի առնելով, օրինակ, կառուցվածքի դաշտերի հավասարեցման կարգավորումները), բայց դրա հաշվարկը կատարվում է կազմման փուլում:
Քայլ 2
Ofանգվածի չափը որոշելու համար, օգտագործելով sizeof օպերատորը, նրա ամբողջ չափը բաժանիր մեկ տարրի չափի վրա: Օրինակ, եթե ունեք զանգվածի հետևյալ սահմանումը. Int aTemp = {10, 20, 0xFFFF, -1, 16}, ապա դրա չափը կարող է հաշվարկվել ՝ [0]);
Քայլ 3
Այս մեթոդի առավել հարմար օգտագործման համար իմաստ ունի սահմանել մակրո. # Սահմանել (a) չափը (a) / sizeof (a [0])) Հաշվի առեք, որ քանի որ գործառույթի չափի արժեքը հաշվարկվում է կազմելիս ժամանակը, այն կետում, որտեղ կատարվում է հաշվարկը, զանգվածի ծավալի և դրա տարրերի վերաբերյալ տեղեկատվությունը պետք է հստակ հասանելի լինի: Այլ կերպ ասած, անհնար է պարզել անհայտ չափի զանգվածի պարամետրերը դրա արտաքին հայտարարագրով:
Քայլ 4
Theրագրի կատարման ընթացքում որոշեք զանգվածի չափը `օգտագործելով դրա դադարեցման հայտնի նշանը: Մոտեցումներից մեկը, որը թույլ է տալիս պահպանել և փոխանցել տվյալներ անորոշ երկարության զանգվածների տեսքով, տվյալների հաջորդականության ավարտը նշող նշանի համար հատուկ արժեք հատկացնելն է: Օրինակ, մի բայթ C ոճի տողերը, որոնք նիշերի զանգվածներ են, պետք է ավարտվեն 0 արժեքով, փաթեթավորված փոփոխական երկարությամբ C լարային զանգվածներն ավարտվում են զրոյական, և ցուցիչի զանգվածները պետք է վերջանան:
Քայլ 5
Այս եղանակով ներկայացված զանգվածի չափը որոշելու համար սկանավորեք այն տարր առ տարր, մինչև գտնեք ավարտող տարրը:. Ննման ընթացքում ավելացրեք զրոյական սկզբնական հաշվիչը: Կամ, մեծացրեք ցուցիչի արժեքը զանգվածի տարրի վրա, և սկանավորելուց հետո հաշվարկեք ցուցիչի տարբերությունը ընթացիկ և առաջին տարրերի վրա:
Քայլ 6
Ստացեք շրջանակի կամ գրադարանի օբյեկտի կողմից ներկայացված դինամիկ զանգվածի չափը `զանգահարելով դրա մեթոդը: Arանկացած դասեր, որոնք պարունակում են նման զանգվածների ֆունկցիոնալությունը, ունեն տարրերի ընթացիկ քանակը ստանալու մեթոդներ: Օրինակ, C ++ ստանդարտ գրադարանի std:: vector ձևանմուշի դասը ունի չափի մեթոդ, Qt շրջանակի QVector դասը հաշվարկի մեթոդ է, իսկ MFC- ի անալոգ CArray դասը `GetCount մեթոդ: