Raանգվածները կառուցվածքային տվյալների պահպանման ամենապարզ ձևերից մեկն են: Քանի որ հիշողության անբաժանելի տարածքները հատկացված են միաչափ զանգվածներ պահելու համար, և ծրագրավորման լեզուների մեծ մասն ունի շարահյուսական կառուցվածքներ իրենց հայտարարագրման համար, դրանք ինտենսիվորեն օգտագործվում են որպես բուֆերներ մեծ քանակությամբ տեղեկատվություն տարբեր (ներառյալ գրադարանային) գործառույթների փոխանցման համար: Իր հերթին, գործառույթները երբեմն պետք է զանգված վերադարձնեն:
Անհրաժեշտ է
- - տեքստի խմբագիր;
- - C կամ C ++ կազմող և հղիչ:
Հրահանգներ
Քայլ 1
Վերադարձրեք տվյալները ֆունկցիայից կամ մեթոդից ՝ դրանք տեղադրելով զանգահարողի կողմից հատկացված ֆիքսված երկարության զանգվածում և փոխանցված հղումով: Սահմանեք տվյալների համապատասխան տեսակը, օրինակ ՝ typedef int t_array10 [10]; Օգտագործեք այն պահանջվող գործառույթի կամ մեթոդի հայտարարագրման և իրականացման մեջ. Անվավեր ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Callանգահարել համապատասխանաբար ՝ int aNumbers [10]; ReturnArray (aNumbers); Այս մեթոդի թերությունն այն է, որ զանգվածի երկարությունը ֆիքսված է:
Քայլ 2
Վերադարձեք զանգվածի տվյալները ՝ դրանք տեղադրելով ցուցիչի կողմից փոխանցված զանգահարողին հատկացված ելքային բուֆերում: Ֆունկցիայի կամ մեթոդի նախատիպը կարող է պարունակել պարամետր, որը հայտարարվել է զանգվածի նշագրման մեջ, առանց չափի ճշգրտման. Անվավեր ReturnArray (int anArray , int nSize); կամ որպես ցուցիչ ՝ void ReturnArray (int * pnArray, int nSize); երկուսում էլ դեպքեր, նույնացուցիչի պարամետրը կարող է օգտագործվել զանգվածի նշագրման մեջ. անվավեր ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // զանգել int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); arանգվածները գործառույթներին փոխանցելու և դրանցից զանգվածի տվյալները վերադարձնելու այս մեթոդը օգտագործվում է C ծրագրեր մշակելիս դեպքերի ճնշող մեծամասնությունում: Գործառույթներն ու մեթոդները, որոնք այս եղանակով ընդունում և վերադարձնում են տվյալները, որպես կանոն, պետք է ունենան լրացուցիչ պարամետր, որի միջոցով փոխանցվում է բուֆերի իրական չափը:
Քայլ 3
Վերադարձեք գործառույթում կամ մեթոդում ստեղծված զանգվածը: Ձևականորեն, այս դեպքում ոչ թե զանգվածը պետք է վերադարձվի, այլ ցուցիչը իր առաջին տարրի համար. Int * ReturnArray () {int * pnArray = new int [10]; // աշխատել pnArray- ի հետ վերադարձնել pnArray;} // ցուցիչ բերել ստացված զանգվածին int * pnNumbers = ReturnArray (); // օգտագործել ջնջել pnNumbers; // ջնջել Այս մեթոդը որոշ սահմանափակումներ ունի: Այսպիսով, զանգվածը պետք է տեղակայված լինի կույտի մեջ: Բացի այդ, դրա ջնջումը պետք է կատարվի ստեղծմանը համապատասխանող մեթոդով (ջնջել նոր, անվճար malloc- ի օգտագործման դեպքում և այլն):
Քայլ 4
C ++ ծրագրեր մշակելիս զանգվածները հարմարավետորեն վերադարձնելու համար օգտագործեք տարաների դասեր: +անգվածի ստեղծման և վերադարձման օրինակը, որը C ++ ստանդարտ ձևանմուշների գրադարանի վեկտորի ձևանմուշի դասի օբյեկտ է, կարող է նման լինել. #Include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; վերադարձ oArray;} std:: vector oArray = ReturnArray (); Նկատի ունեցեք, որ հանրաճանաչ շրջանակների մեծ մասը տրամադրում է հզոր դասեր կամ զանգվածի դասի ձևանմուշներ Դրանք հաճախ իրականացնում են տվյալների անուղղակի փոխանակման հայեցակարգը `հղումների հաշվարկի և պատճենման վրա գրելու միջոցով: Հետևաբար, գործառույթներից այդպիսի զանգվածների արժեքով վերադարձը կատարվում է շատ արդյունավետ և կապված է հաշվողական ռեսուրսների նվազագույն սպառման հետ: