Массив гэж нэрлэгддэг ижил төрлийн өгөгдлийн нэртэй цуглуулга нь програмчлалын янз бүрийн хэлэнд өргөн хэрэглэгддэг. Массивын тусламжтайгаар өгөгдөлтэй ажиллах нь илүү хялбар бөгөөд програмын кодын бүтэц хангагдсан болно. Хэл дээрх функцууд нь нэлээд урт замыг туулж, кодынхоо аль ч хэсэгт өндөр түвшний зорилтот даалгаврыг дахин хэрэгжүүлэхгүйгээр гүйцэтгэх боломжийг олгодог. Энэ тохиолдолд нэг массивын өгөгдлийг функц болон бусад кодын блокуудад ашиглах шаардлагатай байдаг. Массивыг функцээс буцааж хэд хэдэн аргаар хэрэгжүүлж болно.
Зааварчилгаа
1-р алхам
C ++ програмчлалын хэл дээр массивыг функцээс шууд буцааж өгөхгүй бөгөөд өгөгдлийн массив руу заагчийг дамжуулж энэ ажлыг шийдэж болно. Үүнийг хийхийн тулд ашиглах функцийг зарлахдаа өгөгдлийн төрөлд буцааж өгөх утга болгон шилжүүлэхээр төлөвлөж буй массивыг бичнэ үү.
Массивын өгөгдлийг заагчаар буцаахыг хэрэгжүүлдэг C ++ програмын кодын жишээ:
анги СHelp
{
хувийн:
int m_data [4];
олон нийтийн:
fDebit ()
{
m_data [0] = 42;
m_data [1] = 56;
}
int * returnArray () // функцын тунхаглал ба тайлбар
{
буцах m_data;
}
};
void main ()
{
int * m_dataA;
СHelp * ohelp = шинэ СHelp ();
m_dataA = ohelp-> returnArray (); // ангийн массивыг буцаана
}
Гэсэн хэдий ч ийм буцах нь зөвхөн нэг ангийн хүрээнд л боломжтой гэдгийг санаж байх хэрэгтэй. Хэрэв та програмын кодонд ердийн функцийг ашиглах шаардлагатай бол заагчаар дамжуулж ижил төстэй өгөгдөл дамжуулах нь буруу байх бөгөөд алдаатай гүйцэтгэгдэж магадгүй юм. Энэ нь хувьсагчдын хамрах хүрээтэй холбоотой юм. Массивыг функцэд өөрөө үүсгэх үед энэ нь тухайн функцын гадна талд харагдахгүй болно.
Алхам 2
Хэрэв та локал функцээс массивыг шилжүүлэх шаардлагатай бол дараах сонголтыг ашиглана уу. Програмын үндсэн кодод массив үүсгэх. Функцийг параметрүүдээр зарлаж, эхнийх нь массивын өгөгдлийн төрөлд тогтмол заагч байх болно, хоёр дахь нь ижил төрлийн тогтмол заагч юм. Функцийг дуудахдаа үүсгэсэн массивын хаягийг эхний ба хоёрдахь параметрийн адилаар дамжуулна. Эхний хүлээн авсан заагчтай функцэд өгөгдөлтэй ажиллах ба хоёр дахь заагчийн дагуу бүх өөрчлөлтийг бич. Тиймээс, функц дууссаны дараа та массив дахь ажлын үр дүнг хоёр дахь заагч дээр хүлээн авах болно.
Ийм функцийг зарлах жишээ:
void my_funk_1 (const double * in, doble * out);
Алхам 3
Функцээс заагчийг хувьсах хамрах хүрээтэй алдаагүй дамжуулах асуудлыг шийддэг хэрэгжүүлсэн std:: auto_ptr классыг ашиглана уу.
Програмын кодын жишээ:
оруулах
оруулах
int Аrr_f2 (int count) // функцын тодорхойлолт
{
return new int [count];
}
void main ()
{
std:: auto_ptr ptr (Аrr_f2 (20)); // функцийг дуудаж, массивыг буцааж өгнө
cout
Алхам 4
FoxPro програмчлалын хэл дээр функцийн өгөөжийг өмнө нь үүсгэсэн массивыг дурдах замаар ижил төстэй байдлаар хэрэгжүүлж болно.
FoxPro дахь жишээ код:
НУТГИЙН мас (2)
= func_2 (@ f3)
? мас (15)
мас (20)
FUNCTION func_2 (mas)
ГАДААД АРВАН мас
мас (1) = 1
мас (2) = 2
БУЦАХ
ENDFUNC
Алхам 5
AutoIt скрипт хэл нь функцийг массивыг стандарт байгууламжууд болон Return оператор ашиглан буцааж өгөх боломжийг олгодог.
AutoIt хэл дээрх жишээ код:
# оруулах
$ Rez = func_3 ()
$ aRezultat = StringSplit ($ Rez, '|')
Функц func_3 ()
$ aRet = 15 & '|' & 40
$ ARet буцаах // функцээс aRet массивыг буцаах
Төгсгөл