Massivlar - bu ma'lumotlarni saqlashning tuzilgan shakllaridan biridir. Bir o'lchovli massivlarni saqlash uchun bo'linmas xotira maydonlari ajratilganligi va dasturlash tillarining ko'pchiligida ularni e'lon qilish uchun sintaktik tuzilmalari bo'lganligi sababli, ular intensiv ravishda katta hajmdagi ma'lumotlarni turli (shu jumladan kutubxona) funktsiyalariga o'tkazish uchun bufer sifatida foydalaniladi. O'z navbatida, funktsiyalar ba'zan qatorni qaytarishi kerak.
Kerakli
- - matn muharriri;
- - C yoki C ++ kompilyatori va bog'lovchi.
Ko'rsatmalar
1-qadam
Ma'lumotlarni funktsiya yoki usuldan qo'ng'iroq qiluvchi tomonidan ajratilgan va mos yozuvlar orqali uzatilgan, belgilangan uzunlikdagi qatorga joylashtirish orqali qaytaring. Ma'lumotlarning tegishli turini aniqlang, masalan: typedef int t_array10 [10]; Deklaratsiya qilishda va kerakli funktsiya yoki usulni bajarishda foydalaning: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Tegishli qo'ng'iroq: int aNumbers [10]; ReturnArray (aNumbers); Ushbu usulning kamchiligi massivning uzunligi aniqlanganligidadir.
2-qadam
Massiv ma'lumotlarini ko'rsatgich orqali uzatilgan qo'ng'iroqchiga ajratilgan chiqish buferiga joylashtirish orqali qaytaring. Funksiya yoki usulning prototipi har ikkala massiv notatsiyada ham o'lchamlari aniqlanmagan holda e'lon qilingan parametrni o'z ichiga olishi mumkin: void ReturnArray (int anArray , int nSize); yoki ko'rsatgich sifatida: void ReturnArray (int * pnArray, int nSize); ikkalasida ham holatlarda identifikator parametri massiv yozuvida ishlatilishi mumkin: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // int aNumbers chaqirish [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Bu qatorlarni funktsiyalarga uzatish va ular qatoridan ma'lumotlarni qaytarish usuli C dasturlarini ishlab chiqishda aksariyat hollarda qo'llaniladi. ma'lumotlarni shu tarzda qabul qiladigan va qaytaradigan funktsiyalar va usullar, qoida tariqasida, buferning haqiqiy kattaligi uzatiladigan qo'shimcha parametrga ega bo'lishi kerak.
3-qadam
Funktsiya yoki usulda yaratilgan qatorni qaytaring. Rasmiy ravishda, bu holda massivni emas, balki uning birinchi elementiga ko'rsatgichni qaytarish kerak: int * ReturnArray () {int * pnArray = new int [10]; // pnArray bilan ishlash return pnArray;} // yaratilgan qatorga ko'rsatgich olish int * pnNumbers = ReturnArray (); // delete pnNumbers dan foydalanish; // o'chirish Ushbu usul ba'zi cheklovlarga ega. Shunday qilib, massiv uyumda joylashgan bo'lishi kerak. Bundan tashqari, uni yo'q qilish yaratilishga mos keladigan usul bilan amalga oshirilishi kerak (yangi ishlatilganda o'chirish, malloc uchun bepul va boshqalar).
4-qadam
C ++ dasturlarini ishlab chiqishda massivlarni qulay tarzda qaytarish uchun konteyner sinflaridan foydalaning. Int uchun belgilangan C ++ standart shablonlar kutubxonasining vektor shablonlari klassi ob'ekti bo'lgan massivni yaratish va qaytarish misoli quyidagicha ko'rinishi mumkin: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); E'tibor bering, mashhur ramkalarning aksariyati kuchli sinflar yoki qator sinflari shablonlarini taqdim etadi. Ular tez-tez ma'lumotlarning yashirin ma'lumotlarini almashish kontseptsiyasini mos yozuvlar hisoblash va nusxa ko'chirish bilan amalga oshiradilar. Shuning uchun funktsiyalardan bunday massivlarning qiymati bo'yicha qaytish juda samarali bajariladi va hisoblash resurslarining minimal sarflanishi bilan bog'liq.