Menu
CoddyTech

Pointer ke Struct

Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 44 dari 63.

Sekarang kamu sudah nyaman bekerja dengan struct, saatnya menggabungkannya dengan konsep C yang hebat lainnya: pointer. Sama seperti kamu dapat membuat pointer ke tipe data dasar seperti int atau char, kamu juga dapat membuat pointer yang menyimpan alamat variabel struct.

Sintaks untuk mendeklarasikan pointer ke struct mengikuti pola yang sama dengan deklarasi pointer lainnya:

struct StructureName *pointerName;

Misalnya, dengan menggunakan struct Point yang sudah kita kenal:

struct Point p1 = {10, 20};
struct Point *ptr;

Ini membuat pointer bernama ptr yang dapat menyimpan alamat struct Point. Agar pointer benar-benar menunjuk ke variabel struct kita, gunakan operator address-of:

ptr = &p1;

Untuk membaca member melalui pointer, lakukan dereferensi pada pointer, lalu gunakan operator titik. Tanda kurung diperlukan karena . memiliki prioritas lebih tinggi daripada *:

printf("%d", (*ptr).x); // sama dengan p1.x

Sekarang ptr menyimpan alamat memori dari variabel struct p1. Ini membuka berbagai kemungkinan baru dalam bekerja dengan struct, terutama saat meneruskannya ke fungsi atau mengelola memori secara dinamis. Pointer ke struct sangat penting untuk membangun struktur data yang lebih kompleks dan menulis program C yang efisien.

challenge icon

Tantangan

Mudah

Buat program C yang menunjukkan cara bekerja dengan pointer ke struct. Programmu harus:

  1. Mendefinisikan struct bernama Product dengan anggota berikut:
    • Integer id untuk menyimpan ID produk
    • Array karakter name berukuran 25 untuk menyimpan nama produk
    • Float price untuk menyimpan harga produk
    • Integer quantity untuk menyimpan jumlah yang tersedia
  2. Di fungsi utama, membuat variabel Product bernama item dan menginisialisasinya dengan nilai berikut:
    • ID: 501
    • Nama: "Laptop"
    • Harga: 899.99
    • Jumlah: 15
  3. Mendeklarasikan pointer ke struct Product bernama itemPtr
  4. Menetapkan alamat variabel item ke itemPtr menggunakan operator alamat
  5. Mencetak informasi produk asli dengan mengakses anggota struct secara langsung (menggunakan operator titik) dalam format persis berikut:
    • Original Product Info:
    • ID: [id]
    • Name: [name]
    • Price: [price]
    • Quantity: [quantity]
  6. Mencetak informasi produk yang sama dengan mengakses anggota struct melalui pointer (menggunakan operator dereferensi dan notasi titik: (*itemPtr).member) dalam format persis berikut:
    • Product Info via Pointer:
    • ID: [id]
    • Name: [name]
    • Price: [price]
    • Quantity: [quantity]
  7. Memverifikasi bahwa pointer menunjuk ke struct dengan mencetak alamat memori dalam format persis berikut:
    • Address of item: [address]
    • Value of itemPtr: [address]
    • Address verification: [result]

Untuk verifikasi alamat, cetak Match jika alamatnya sama, atau No Match jika berbeda.

Tantangan ini menguji pemahamanmu tentang deklarasi pointer ke struct, penetapan alamat menggunakan operator alamat, dan cara mengakses anggota struct melalui pointer menggunakan operator dereferensi yang dipadukan dengan notasi titik. Kamu juga akan memverifikasi bahwa pointer menyimpan alamat variabel struct dengan benar.

Coba sendiri

#include <stdio.h>
#include <string.h>

// TODO: Definisikan struct Product di sini

int main() {
    // TODO: Tulis kodemu di sini
    // 1. Buat dan inisialisasi variabel Product bernama 'item'
    // 2. Deklarasikan pointer ke Product bernama 'itemPtr'
    // 3. Tetapkan alamat 'item' ke 'itemPtr'
    // 4. Cetak informasi produk asli menggunakan operator titik
    // 5. Cetak informasi produk melalui pointer menggunakan (*itemPtr).member
    // 6. Cetak dan periksa alamatnya
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C online