Bagikan melalui


Anggota Struktur dan Union

"Ekspresi pemilihan anggota" mengacu pada anggota struktur dan union. Ekspresi tersebut memiliki nilai dan jenis anggota yang dipilih.

postfix-expression . identifier
postfix-expression -> identifier

Daftar ini menjelaskan dua bentuk ekspresi pemilihan anggota:

  1. Dalam formulir pertama, postfix-expression mewakili nilai struct atau union jenis, dan identifier menamai anggota struktur atau gabungan yang ditentukan. Nilai operasi adalah dan identifier merupakan nilai l jika postfix-expression merupakan nilai l. Untuk informasi selengkapnya, lihat L-Value dan R-Value Expressions.

  2. Dalam bentuk kedua, postfix-expression mewakili penunjuk ke struktur atau gabungan, dan identifier menamai anggota struktur atau gabungan yang ditentukan. Nilainya adalah dan identifier merupakan nilai l.

Dua bentuk ekspresi pemilihan anggota memiliki efek yang sama.

Faktanya, ekspresi yang melibatkan operator pemilihan anggota (->) adalah versi singkat dari ekspresi menggunakan titik (.) jika ekspresi sebelum periode terdiri dari operator tidak langsung (*) yang diterapkan ke nilai pointer. Karena itu,

expression->identifier

setara dengan:

(*expression).identifier

ketika expression adalah nilai penunjuk.

Contoh

Contoh berikut mengacu pada deklarasi struktur ini. Untuk informasi tentang operator tidak langsung (*) yang digunakan dalam contoh ini, lihat Operator Tidak Langsung dan Alamat.

struct pair
{
    int a;
    int b;
    struct pair *sp;
} item, list[10];

Ekspresi pemilihan anggota untuk struktur item terlihat seperti ini:

item.sp = &item;

Dalam contoh, alamat item struktur ditetapkan ke sp anggota struktur. Ini berarti bahwa item berisi penunjuk ke dirinya sendiri.

(item.sp)->a = 24;

Dalam contoh ini, ekspresi item.sp penunjuk digunakan dengan operator pemilihan anggota (->) untuk menetapkan nilai kepada anggota a.

list[8].b = 12;

Pernyataan ini menunjukkan cara memilih anggota struktur individual dari array struktur.

Lihat juga

Operator Akses Anggota: . and ->