C++ Array Parameter Vs Pointer

4 min read Jul 05, 2024
C++ Array Parameter Vs Pointer

C++ Array Parameter vs Pointer: Memahami Perbedaan

Dalam C++, array dan pointer seringkali digunakan bersama, terutama saat diteruskan sebagai parameter ke dalam fungsi. Meskipun tampak serupa, keduanya memiliki perbedaan fundamental yang perlu dipahami untuk menulis kode yang efisien dan benar.

1. Penyerahan Salinan vs. Penyerahan Referensi

Array: Ketika array diteruskan sebagai parameter ke dalam fungsi, salinan dari array tersebut dibuat dan dilampirkan ke parameter fungsi. Modifikasi terhadap parameter array dalam fungsi tidak akan memengaruhi array asli yang diteruskan.

Pointer: Ketika pointer diteruskan sebagai parameter, alamat memori dari array aslinya diteruskan. Oleh karena itu, setiap modifikasi yang dilakukan pada array melalui pointer dalam fungsi akan langsung memengaruhi array aslinya.

2. Ukuran Array

Array: Ukuran array harus ditentukan saat diteruskan sebagai parameter ke dalam fungsi. Ini berarti fungsi akan menerima salinan array dengan ukuran yang tetap dan tidak dapat mengubah ukurannya.

Pointer: Pointer hanya menunjuk ke lokasi memori, sehingga tidak memiliki ukuran yang tetap. Fungsi dapat memanipulasi data di lokasi memori tersebut, termasuk mengubah panjang array dengan mengalokasikan memori tambahan.

3. Pertimbangan Efisiensi

Array: Penyerahan salinan array dapat memakan waktu dan ruang memori yang signifikan, terutama untuk array besar.

Pointer: Penyerahan pointer lebih efisien karena hanya alamat memori yang diteruskan, bukan salinan data. Ini memungkinkan modifikasi langsung pada array asli dengan minimal overhead.

4. Contoh Implementasi

Array:

#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 numbers[] = {1, 2, 3, 4, 5};
  printArray(numbers, 5); // Salinan array dibuat di dalam fungsi
  numbers[0] = 10; // Modifikasi pada array asli
  printArray(numbers, 5); // Mencetak array asli dengan nilai yang dimodifikasi
  return 0;
}

Pointer:

#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 numbers[] = {1, 2, 3, 4, 5};
  printArray(numbers, 5); // Pointer ke array aslinya diteruskan
  *numbers = 10; // Modifikasi pada array asli melalui pointer
  printArray(numbers, 5); // Mencetak array asli dengan nilai yang dimodifikasi
  return 0;
}

5. Kapan Menggunakan Pointer vs Array

  • Gunakan pointer jika Anda perlu memodifikasi array aslinya dalam fungsi atau jika Anda bekerja dengan array yang ukurannya dapat berubah.
  • Gunakan array jika Anda hanya ingin meneruskan data array ke fungsi tanpa memodifikasinya atau jika Anda ingin menjaga data asli tetap aman.

Kesimpulan

Meskipun array dan pointer dapat digunakan untuk mencapai tujuan yang sama, penting untuk memahami perbedaan fundamental antara keduanya. Memilih teknik yang tepat dapat meningkatkan efisiensi kode dan menghindari bug yang tidak terduga.

Featured Posts