Struktur Bertingkat dalam C: Panduan untuk Pemula

Hai teman-teman, para maestro coding masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia struktur bertingkat dalam C. Jangan khawatir jika Anda baru saja memulai programming; saya akan menjadi panduan ramah Anda, dan kita akan meng eksplor konsep ini langkah demi langkah. Jadi, ambil minuman favorit Anda, duduk nyaman, dan mari kita masuk ke dalamnya!

C - Nested Structures

Apa Itu Struktur Bertingkat dalam C?

Bayangkan Anda sedang mengatur rak bukunya. Anda memiliki buku, tapi beberapa buku adalah bagian dari sebuah serial. Apakah Anda merasa akan bagus jika Anda dapat mengelompokkan buku serial itu bersama-sama? Itu tepat apa yang dilakukan struktur bertingkat dalam programming C!

Struktur bertingkat adalah secara sederhana sebuah struktur yang ada di dalam struktur lain. Itu seperti memiliki sebuah kotak (struktur luar) yang berisi kotak-kotak kecil (struktur dalam). Konsep ini memungkinkan kita untuk menciptakan struktur data yang lebih kompleks dan terorganisir.

Declarasi Struktur Bertingkat

mari kita mulai dengan contoh sederhana. Misal kita membuat program untuk perpustakaan. Kita ingin menyimpan informasi tentang buku, termasuk rincian tentang penulisnya.

struct Author {
char name[50];
int birth_year;
};

struct Book {
char title[100];
float price;
struct Author author;
};

Dalam contoh ini, struct Author disembunyikan dalam struct Book. Ini berarti setiap struktur Book akan mengandung struktur Author di dalamnya.

Mengakses Anggota Struktur Bertingkat

Sekarang kita sudah mendeklarasikan struktur bertingkat, mari kita lihat bagaimana kita dapat menggunakannya:

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

int main() {
struct Book myBook;

strcpy(myBook.title, "The C Programming Language");
myBook.price = 29.99;

strcpy(myBook.author.name, "Brian Kernighan");
myBook.author.birth_year = 1942;

printf("Buku: %s\n", myBook.title);
printf("Harga: $%.2f\n", myBook.price);
printf("Penulis: %s (lahir %d)\n", myBook.author.name, myBook.author.birth_year);

return 0;
}

Dalam kode ini, kita menciptakan struktur Book dan mengisi data nya. Perhatikan bagaimana kita mengakses struktur Author yang disembunyikan menggunakan operator titik (.) dua kali: myBook.author.name.

Ketika Anda menjalankan program ini, Anda akan melihat:

Buku: The C Programming Language
Harga: $29.99
Penulis: Brian Kernighan (lahir 1942)

Apakah ini menarik bagaimana kita dapat mengatur data yang berkaitan secara bersih?

Struktur Bertingkat dengan Mendefinisikan Struktur Inline

kadang-kadang, Anda mungkin ingin mendefinisikan sebuah struktur langsung di dalam struktur lain. Ini disebut struktur bertingkat inline. Mari kita modifikasi contoh sebelumnya:

struct Book {
char title[100];
float price;
struct {
char name[50];
int birth_year;
} author;
};

Dalam kasus ini, kita mendefinisikan struktur author langsung di dalam Book. Pendekatan ini bisa berguna ketika struktur dalam hanya relevan dalam konteks struktur luar.

Struktur Bertingkat dengan Mendefinisikan Struktur Terpisah

Metode yang kita gunakan dalam contoh pertama, yaitu mendefinisikan Author terpisah dari Book, biasanya lebih disukai. Itu memungkinkan organisasi kode yang lebih baik dan reusabilitas. Ini mengapa:

struct Author {
char name[50];
int birth_year;
};

struct Book {
char title[100];
float price;
struct Author author;
};

struct Magazine {
char name[100];
struct Author editor;
};

Dengan mendefinisikan Author terpisah, kita dapat menggunakannya di beberapa tempat, seperti dalam struktur Book dan Magazine.

Pointer ke Struktur Bertingkat

Terakhir namun bukan paling kurang, mari kita bicarakan tentang pointer ke struktur bertingkat. Ini bisa menjadi sesuatu yang agak sulit, tetapi sangat berguna untuk alokasi memori dinamis dan manipulasi data yang efisien.

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

int main() {
struct Book *bookPtr = malloc(sizeof(struct Book));

strcpy(bookPtr->title, "Effective C");
bookPtr->price = 39.99;

strcpy(bookPtr->author.name, "Robert C. Seacord");
bookPtr->author.birth_year = 1959;

printf("Buku: %s\n", bookPtr->title);
printf("Harga: $%.2f\n", bookPtr->price);
printf("Penulis: %s (lahir %d)\n", bookPtr->author.name, bookPtr->author.birth_year);

free(bookPtr);
return 0;
}

Dalam contoh ini, kita menggunakan pointer ke struktur Book. Perhatikan bagaimana kita menggunakan operator panah (->) untuk mengakses anggota struktur melalui pointer, tetapi kita masih menggunakan operator titik (.) untuk mengakses anggota struktur disembunyikan.

Kesimpulan

Selamat! Anda telah mengambil langkah pertama ke dunia struktur bertingkat dalam C. Alat ini yang kuat memungkinkan Anda menciptakan struktur data yang lebih kompleks dan terorganisir, yang sangat penting bagi program yang lebih besar dan lebih canggih.

Ingat, latihan membuat sempurna. Cobalah untuk membuat struktur bertingkat Anda sendiri, mungkin untuk pustaka musik atau buku resep. Semakin Anda bermain dengan konsep ini, semakin Anda akan merasa nyaman dengannya.

Selamat coding, dan semoga struktur Anda selalu teratur dengan sempurna!



| Metode | Deskripsi | Contoh |
|--------|-----------|--------|
| Declarasi Struktur Bertingkat | Mendefinisikan sebuah struktur di dalam struktur lain | `struct Book { struct Author author; };` |
| Mengakses Anggota Struktur Bertingkat | Menggunakan operator titik untuk mengakses anggota | `myBook.author.name` |
| Struktur Bertingkat Inline | Mendefinisikan sebuah struktur langsung di dalam struktur lain | `struct Book { struct { char name[50]; } author; };` |
| Definisi Struktur Terpisah | Mendefinisikan struktur secara terpisah untuk reusabilitas | `struct Author {...}; struct Book { struct Author author; };` |
| Pointer ke Struktur Bertingkat | Menggunakan pointer untuk mengakses struktur bertingkat | `bookPtr->author.name` |

Credits: Image by storyset