C++ Array Struct Pointer

6 min read Jul 05, 2024
C++ Array Struct Pointer

Memahami Array Struct Pointer dalam C++

Dalam C++, struct adalah tipe data terstruktur yang menggabungkan variabel dengan tipe data yang berbeda dalam satu kesatuan. Pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Array adalah kumpulan data dengan tipe data yang sama.

Memahami bagaimana array, struct, dan pointer bekerja bersama dapat meningkatkan fleksibilitas dan efisiensi program C++ Anda. Mari kita jelajahi konsep ini lebih lanjut.

1. Array of Struct

Anda dapat membuat array yang berisi beberapa instance dari struct yang sama. Misalnya, Anda bisa memiliki array yang berisi data siswa:

#include 
#include 

using namespace std;

struct Mahasiswa {
  string nama;
  int nim;
  float ipk;
};

int main() {
  // Membuat array dari 3 struktur Mahasiswa
  Mahasiswa mahasiswa[3];

  // Mengisi data mahasiswa pertama
  mahasiswa[0].nama = "John Doe";
  mahasiswa[0].nim = 12345;
  mahasiswa[0].ipk = 3.8;

  // Mengisi data mahasiswa kedua
  mahasiswa[1].nama = "Jane Doe";
  mahasiswa[1].nim = 67890;
  mahasiswa[1].ipk = 3.5;

  // Mengisi data mahasiswa ketiga
  mahasiswa[2].nama = "Peter Pan";
  mahasiswa[2].nim = 11122;
  mahasiswa[2].ipk = 3.2;

  // Menampilkan data mahasiswa
  for (int i = 0; i < 3; i++) {
    cout << "Nama: " << mahasiswa[i].nama << endl;
    cout << "NIM: " << mahasiswa[i].nim << endl;
    cout << "IPK: " << mahasiswa[i].ipk << endl;
    cout << endl;
  }

  return 0;
}

Dalam kode ini, mahasiswa adalah array yang berisi tiga struct Mahasiswa. Anda dapat mengakses setiap anggota struct dalam array dengan menggunakan indeks.

2. Pointer to Struct

Anda juga dapat menggunakan pointer untuk merujuk ke struct. Pointer ke struct menyimpan alamat memori dari struct tersebut.

#include 
#include 

using namespace std;

struct Mahasiswa {
  string nama;
  int nim;
  float ipk;
};

int main() {
  // Membuat struct Mahasiswa
  Mahasiswa mhs;

  // Membuat pointer ke struct Mahasiswa
  Mahasiswa *ptrMhs = &mhs;

  // Mengisi data struct menggunakan pointer
  ptrMhs->nama = "John Doe";
  ptrMhs->nim = 12345;
  ptrMhs->ipk = 3.8;

  // Menampilkan data struct menggunakan pointer
  cout << "Nama: " << ptrMhs->nama << endl;
  cout << "NIM: " << ptrMhs->nim << endl;
  cout << "IPK: " << ptrMhs->ipk << endl;

  return 0;
}

Anda dapat mengakses anggota struct dengan menggunakan operator -> pada pointer.

3. Array of Pointer to Struct

Anda dapat menggabungkan array dan pointer untuk membuat array yang berisi pointer ke struct. Ini memungkinkan Anda untuk mengelola struktur dinamis.

#include 
#include 

using namespace std;

struct Mahasiswa {
  string nama;
  int nim;
  float ipk;
};

int main() {
  // Membuat array pointer ke struct Mahasiswa
  Mahasiswa *mahasiswa[3];

  // Alokasi memori untuk masing-masing struct
  for (int i = 0; i < 3; i++) {
    mahasiswa[i] = new Mahasiswa;
  }

  // Mengisi data struct menggunakan pointer
  mahasiswa[0]->nama = "John Doe";
  mahasiswa[0]->nim = 12345;
  mahasiswa[0]->ipk = 3.8;

  mahasiswa[1]->nama = "Jane Doe";
  mahasiswa[1]->nim = 67890;
  mahasiswa[1]->ipk = 3.5;

  mahasiswa[2]->nama = "Peter Pan";
  mahasiswa[2]->nim = 11122;
  mahasiswa[2]->ipk = 3.2;

  // Menampilkan data struct menggunakan pointer
  for (int i = 0; i < 3; i++) {
    cout << "Nama: " << mahasiswa[i]->nama << endl;
    cout << "NIM: " << mahasiswa[i]->nim << endl;
    cout << "IPK: " << mahasiswa[i]->ipk << endl;
    cout << endl;
  }

  // Melepaskan alokasi memori
  for (int i = 0; i < 3; i++) {
    delete mahasiswa[i];
  }

  return 0;
}

Dalam contoh ini, mahasiswa adalah array yang berisi pointer ke struct Mahasiswa. Anda perlu mengalokasikan memori untuk masing-masing struct dengan menggunakan operator new dan melepasnya dengan menggunakan delete setelah selesai.

Keuntungan Menggunakan Array of Pointer to Struct:

  • Fleksibel: Anda dapat menambahkan atau menghapus struct secara dinamis.
  • Efisiensi: Anda dapat menyimpan struct di lokasi memori yang optimal, menghindari pemborosan ruang.
  • Pengelolaan Memori: Anda memiliki kontrol penuh atas alokasi dan dealokasi memori.

Kesimpulan

Memahami hubungan antara array, struct, dan pointer dalam C++ memberikan Anda alat yang ampuh untuk membuat program yang lebih efisien dan fleksibel. Array of pointer to struct memungkinkan Anda untuk bekerja dengan data dinamis dan mengelola memori secara efektif.