Dalam C , mengembalikan tatasusunan daripada fungsi tidak boleh dilakukan secara langsung, kerana memori tatasusunan tidak boleh disalin melalui penyataan pulangan. Untuk memintas pengehadan ini, pendekatan alternatif mesti digunakan.
Vektor, sebahagian daripada Pustaka Standard C, ialah tatasusunan dinamik yang boleh digunakan untuk menyimpan dan mengembalikan koleksi elemen. Ia menyediakan alternatif yang mudah kepada tatasusunan terbina dalam dan boleh disalin dan dimanipulasi dengan mudah.
std::vector<int> myfunction(const std::vector<int>& my_array) { std::vector<int> f_array; // ... Operations on f_array ... return f_array; }
Tatasusunan Boost, yang disediakan oleh perpustakaan Boost, ialah tatasusunan bersaiz tetap yang menawarkan sintaks yang lebih mudah daripada std::vectors. Mereka merangkum tatasusunan mentah dan memastikan akses selamat dalam had yang ditentukan.
boost::array<int, 2> myfunction(const boost::array<int, 2>& my_array) { boost::array<int, 2> f_array; // ... Operations on f_array ... return f_array; }
Memulangkan penuding memori yang menunjuk kepada elemen tatasusunan ialah pendekatan lain. Walau bagaimanapun, kaedah ini memerlukan pengurusan memori manual dan harus digunakan dengan berhati-hati, terutamanya dalam persekitaran berbilang benang.
int* myfunction(int* my_array) { // ... Operations on my_array ... return my_array; }
Nota: Dalam contoh kod anda, tatasusunan my_array diisytiharkan dengan satu elemen ([1]). Untuk memegang dua nilai, ia harus diisytiharkan sebagai [2]. Selain itu, tatasusunan yang dikembalikan dalam fungsi cadangan anda (f_array) memerlukan penuding untuk dikembalikan, kerana tatasusunan itu sendiri tidak boleh dikembalikan secara langsung.
Atas ialah kandungan terperinci Bagaimanakah anda Mengembalikan Array daripada Fungsi dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!