# Struktur Data
Struktur data adalah grup dari elemen-elemen data yang dikelompokkan dengan sebuah nama. Elemen-elemen data ini disebut sebagai *member*, dapat mempunyai tipe-tipe berbeda dan panjang-panjang berbeda. Struktur data dideklarasikan dalam C++ menggunakan syntax berikut:
```cpp
struct nama_tipe {
tipe_member1 nama_member1;
tipe_member2 nama_member2;
tipe_member3 nama_member3;
tipe_member4 nama_member4;
...
}
```
Dimana `nama_tipe` adalah nama dari tipe struktur, `nama_object` dapat ditentukan sebagai indentifier valid untuk object dan object-object dapat mempunyai tipe struktur ini. Dalam kurung kurawal `{}`, terdapat sebuah daftar dari member-meber data, masing-masing dijelaskan dengan sebuah tipe dan identifier valid sebagai namanya.
Sebagai contoh:
```cpp
struct produk {
int berat;
double harga;
};
product apel;
product pisang, melon;
```
Kode di atas mendeklatasikan sebuah tipe struktur, disebuty `produk` dan didefinisikan dengan dua member: `berat` dan `harga`, masing-masing mempunyai tipe dasar berbeda. Deklarasi ini membuat sebuat tipe baru (`produk`) yang pada baris berikutnya digunakan untuk mendeklarasikan tiga object (variabel) dari tipe ini: `apel`, `pisang`, dan `melon`. Perhatikan setelah `produk` dideklarasikan, ia digunakan sperti tipe-tipe data biasanya.
## 3.1 Pointer ke Struktur
Seperti tipe-tipe data lainnya, struktur dapat di-point oleh pointer dengan tipe dirinya sebndiri:
```cpp
struct film_t {
string judul;
int tahun;
};
film_t afilm;
film_t * pfilm;
```
Disini `afilm` adlaah sebuah obejct dari tipe struktur `film_t`, dan `pfilm` adlah pointer yang merujuk ke object dari tipe struktur `film_t`. Maka, kode berikut juga valid:
```cpp
pfilm = &afilm;
```
Nilai dari pointer `pfilm` akan ditugaskan dengan alamat dari object `afilm`.