C++ Array Parameter Fixed Size

5 min read Jul 05, 2024
C++ Array Parameter Fixed Size

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:

  1. Fungsi printArray menerima dua parameter:
    • arr[]: Sebuah pointer ke array integer.
    • size: Ukuran array integer.
  2. Dalam main(), sizeof(myArray) memberikan ukuran total array dalam byte, dan sizeof(myArray[0]) memberikan ukuran satu elemen array dalam byte.
  3. Dengan membagi ukuran total array dengan ukuran satu elemen, kita mendapatkan jumlah total elemen dalam array.
  4. 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:

  1. std::array<int, 5> mendeklarasikan array integer dengan ukuran tetap 5.
  2. Fungsi printArray menerima parameter std::array<int, 5> yang secara otomatis menyimpan ukuran array.
  3. 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.