Array adalah salah satu bentuk penyimpanan data terstruktur yang paling sederhana. Karena area memori yang tidak dapat dibagi dialokasikan untuk menyimpan array satu dimensi, dan sebagian besar bahasa pemrograman memiliki konstruksi sintaksis untuk deklarasinya, mereka secara intensif digunakan sebagai buffer untuk mentransfer sejumlah besar informasi ke berbagai fungsi (termasuk perpustakaan). Pada gilirannya, fungsi terkadang perlu mengembalikan array.
Diperlukan
- - editor teks;
- - C atau C ++ compiler dan linker.
instruksi
Langkah 1
Mengembalikan data dari fungsi atau metode dengan menempatkannya dalam array dengan panjang tetap, dialokasikan oleh pemanggil, dan diteruskan dengan referensi. Tentukan tipe data yang sesuai, misalnya: typedef int t_array10 [10]; Gunakan dalam deklarasi dan implementasi fungsi atau metode yang diperlukan: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} Panggil dengan tepat: int aNumbers [10]; ReturnArray (aNumbers); Kerugian dari metode ini adalah panjang arraynya tetap.
Langkah 2
Kembalikan data array dengan menempatkannya di buffer output yang dialokasikan pemanggil yang dilewatkan oleh pointer. Prototipe fungsi atau metode dapat berisi parameter yang dideklarasikan baik dalam notasi array tanpa spesifikasi ukuran: void ReturnArray (int anArray , int nSize); atau sebagai penunjuk: void ReturnArray (int * pnArray, int nSize); Dalam keduanya kasus, parameter pengenal dapat digunakan dalam notasi array: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // panggil int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); Metode melewatkan array ke fungsi dan mengembalikan data array darinya digunakan di sebagian besar kasus saat mengembangkan program C. Perhatikan bahwa fungsi dan metode yang menerima dan mengembalikan data dengan cara ini, sebagai aturan, harus memiliki parameter tambahan yang melewati ukuran buffer yang sebenarnya.
Langkah 3
Mengembalikan array yang dibuat dalam fungsi atau metode. Secara formal, dalam hal ini, bukan array yang harus dikembalikan, tetapi pointer ke elemen pertamanya: int * ReturnArray () {int * pnArray = new int [10]; // bekerja dengan pnArray return pnArray;} // mendapatkan pointer ke array yang dibuat int * pnNumbers = ReturnArray (); // gunakan delete pnNumbers; // delete Metode ini memiliki beberapa keterbatasan. Jadi, array harus ditempatkan di heap. Selain itu, penghapusannya harus dilakukan dengan metode yang sesuai dengan pembuatannya (hapus jika menggunakan yang baru, gratis untuk malloc, dll.).
Langkah 4
Gunakan kelas kontainer untuk mengembalikan array dengan mudah saat mengembangkan program C ++. Contoh membuat dan mengembalikan array yang merupakan objek kelas template vektor dari Perpustakaan Template Standar C ++ yang ditentukan untuk int mungkin terlihat seperti ini: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); Perhatikan bahwa sebagian besar kerangka kerja populer menyediakan kelas yang kuat atau templat kelas array. Mereka sering menerapkan konsep berbagi data implisit dengan penghitungan referensi dan copy-on-write. Oleh karena itu, mengembalikan nilai array tersebut dari fungsi dilakukan dengan sangat efisien dan dikaitkan dengan konsumsi sumber daya komputasi yang minimum.