---
# System prepended metadata

title: Struktur Data

---

# 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`.

