C++ Array Parameter: Fixed Size
Dalam C++, array dapat digunakan sebagai parameter dalam fungsi. Namun, ada beberapa hal yang perlu diperhatikan, terutama mengenai ukuran array.
Mengapa Ukuran Array Penting?
Dalam C++, array tidak menyimpan ukurannya sendiri. Ketika Anda mendeklarasikan sebuah array, compiler hanya mengalokasikan memori yang cukup untuk menyimpan elemen-elemen array. Ukuran array tidak disimpan secara eksplisit dalam memori.
Akibatnya, ketika Anda mencoba meneruskan array sebagai parameter ke fungsi, compiler tidak memiliki informasi tentang ukuran array tersebut. Fungsi tidak dapat secara otomatis mengetahui berapa banyak elemen yang ada dalam array yang diteruskan.
Solusi: Menggunakan Pointer dan Ukuran
Untuk mengatasi masalah ini, Anda dapat menggunakan kombinasi pointer dan ukuran array sebagai parameter.
Berikut contohnya:
#include
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int myArray[] = {1, 2, 3, 4, 5};
int size = sizeof(myArray) / sizeof(myArray[0]);
printArray(myArray, size);
return 0;
}
Penjelasan:
- Fungsi
printArray
menerima dua parameter:arr[]
: Sebuah pointer ke array integer.size
: Ukuran array integer.
- Dalam
main()
,sizeof(myArray)
memberikan ukuran total array dalam byte, dansizeof(myArray[0])
memberikan ukuran satu elemen array dalam byte. - Dengan membagi ukuran total array dengan ukuran satu elemen, kita mendapatkan jumlah total elemen dalam array.
- Fungsi
printArray
kemudian menggunakan ukuran yang diteruskan untuk mengulangi dan menampilkan setiap elemen dalam array.
Mengapa Tidak Langsung Menggunakan sizeof(arr)
di Dalam Fungsi?
Anda mungkin bertanya mengapa tidak langsung menggunakan sizeof(arr)
di dalam fungsi printArray
. Hal ini karena ketika array diteruskan sebagai parameter, array akan mengalami decay menjadi pointer. Artinya, arr
di dalam fungsi printArray
akan menjadi pointer ke elemen pertama array, bukan lagi array itu sendiri.
Maka, sizeof(arr)
di dalam fungsi printArray
akan memberikan ukuran pointer, bukan ukuran array asli.
Alternatif: Menggunakan std::array
Jika Anda menggunakan C++11 atau yang lebih baru, Anda dapat menggunakan std::array
yang memiliki ukuran tetap dan kemampuan untuk menyimpan ukurannya sendiri.
Berikut contohnya:
#include
#include
void printArray(std::array arr) {
for (int i = 0; i < arr.size(); i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
std::array myArray = {1, 2, 3, 4, 5};
printArray(myArray);
return 0;
}
Penjelasan:
std::array<int, 5>
mendeklarasikan array integer dengan ukuran tetap 5.- Fungsi
printArray
menerima parameterstd::array<int, 5>
yang secara otomatis menyimpan ukuran array. - Anda dapat menggunakan
arr.size()
untuk mendapatkan ukuran array di dalam fungsi.
Kesimpulan
Ketika bekerja dengan array di C++, pastikan Anda memahami bagaimana array ditangani sebagai parameter. Menggunakan kombinasi pointer dan ukuran, atau menggunakan std::array
akan membantu Anda bekerja dengan array secara efisien dan menghindari kesalahan.