Lompat ke konten Lompat ke sidebar Lompat ke footer

Struct Bahasa C dan Penjelasannya

Struct pada Bahasa C merupakan sebuah keyword yang digunakan untuk menciptakan tipe data definisi user pada Bahasa C. Sebuah struct akan menciptakan tipe data yang dapat digunakan untuk mengelompokkan item dari berbagai tipe data yang berbeda menjadi sebuah tipe data tunggal.

Sebelum memahami lebih dalam materi tentang Struct Bahasa C dan Penjelasannya, terlebih dahulu pelajari materi tentang: Enum Bahasa C dan Penjelasannya, Pointer Ke Array Bahasa C dan Penjelasannya, dan Perbedaan Antara const char *p, char * const p, dan const char * const p Bahasa C.

Cara Membuat Struct

Keyword 'struct' merupakan keyword yang digunakan untuk menciptakan sebuah struct pada bahasa C.

struct address
{ char name[50];
char street[100];
char city[50];
char state[20];
int pin; };


Cara Mendeklarasikan Variabel Struct

Variabel struct dapat dideklarasikan menggunakan struct deklarasi atau sebagai sebuah deklarasi terpisah seperti halnya tipe data dasar.

// Sebuah deklarasi variabel dengan deklarasi struct.
struct Point
{int x, y;} 
p1; // Variabel p1 dideklarasikan dengan 'Point'

// Sebuah deklarasi variabel seperti tipe data dasar
struct Point
{int x, y;};


int main()
{struct Point p1; 
/* Variabel p1 dideklarasikan seperti sebuah variabel normal. */}

Catatan: pada Bahasa C++, keyword struct adalah bersifat opsional sebelum dideklarasikan pada sebuah variabel, namun pada Bahasa C keyword struct adalah bersifat wajib untuk dideklarasikan pada struct.

Cara Inisialisasi Anggota Struct

Anggota Struct tidak dapat diinisialisasi dengan nilai deklarasinya. Contoh, program berikut akan mengalami kegagalan ketika dikompilasi menggunakan Bahasa C.

struct Point
{ // tidak dapat dilakukan inisialisasi anggota
// KOMPILATOR ERROR: 
int x = 0; 
// tidak dapat dilakukan inisialisasi anggota
// KOMPILATOR ERROR:
int y = 0; };

Alasan kenapa program akan mengalami error ketika dikompilasi, adalah ketika sebuah tipe data tertentu dideklarasikan, maka tidak ada nilai memori apapun yang akan dialokasikan untuk nilai tersebut. Anggota struct hanya dapat diinisialisasi dengan menggunakan tanda kurung '{}'. Contoh, inisialisasi struct bernilai valid.

struct Point
{int x, y;};

int main()
{
// Inisialisasi bernilai valid. Anggota x mendapatkan nilai 0 dan y mendapatkan nilai 1.
// Urutan deklarasi adalah sebagai berikut.
struct Point p1 = {0, 1}; }


Cara Mengakses Elemen Struct

Anggota struct dapat diakses dengan menggunakan operator dot (.).

Contoh:

#include<stdio.h>


struct Point

{int x, y;};


int main()

{

struct Point p1 = {0, 1};


// Mengakses anggota dari

// titik p1

p1.x = 20;


printf ("x = %d, y = %d",

p1.x, p1.y);


return 0;

}

Output:
x = 20, y = 1

Penunjukkan Inisialisasi Struct

Designated Initialization atau penunjukkan inisialisasi pada struct, memungkinkan anggota struct untuk dinisialisasi dalam urutan apapun. Fitur ini telah ditambahkan pada standar C99 dan versi terbarunya dari bahasa C.

Contoh:

#include<stdio.h>


struct Point

{int x, y, z;};


int main()

{


// Contoh inisialisasi

// penggunaan designated

// initialization pada 

// Bahasa C

struct Point p1 = {.y = 0, .z = 1, .x = 2};


struct Point p2 = {.x = 20};


printf ("x = %d, y = %d, z = %d\n", p1.x, p1.y, p1.z);


printf ("x = %d", p2.x);


return 0;

}

Output:
x = 2, y = 0, z = 1
x = 20

Fitur ini tidak tersedia pada Bahasa C++ dan hanya dapat bekerja pada Bahasa C.

Array Struct

Sama seperti halnya tipe data primitif pada bahasa C, dapat pula diciptakan tipe data struct dalam bentuk array atau yang dikenal dengan istilah array struct.

Contoh:

#include<stdio.h>


struct Point

{int x, y;};


int main()

{

// Membuat array

// struct Bahasa C

struct Point arr[10];


// Mengakses anggota array

arr[0].x = 10;

arr[0].y = 20;


printf("%d %d", arr[0].x, arr[0].y);


return 0;

}

Output:
10 20

Pointer Struct

Seperti halnya tipe data primitif yang terdapat pada Bahasa C, dapat pula diciptakan pointer yang mengarah ke sebuah struct. Jika ingin menciptakan pointer ke struct, maka dapat dilakukan akses ke dalam anggota struct dengan menggunakan operator panah (->).

Contoh:

#include<stdio.h>


struct Point

{int x, y;};


int main()

{

struct Point p1 = {1, 2};


// p2 adalah sebuah pointer ke

// struct p1

struct Point *p2 = &p1;


// Mengakses anggota struct

// menggunakan pointer struct.

printf("%d %d", p2->x, p2->y);


return 0;

}

Output:
1 2

Baca Juga:

Batasan Struct Bahasa C

Pada bahasa C, struct menyediakan sebuah method untuk melakukan pembungkusan secara bersamma dari berbagai tipe data yang berbeda. Sebuah struct sangat membantu menangani proses pengelompokkan suatu logika yang berkaitan dengan item data tertentu. Namun, struct pada bahasa C juga memiliki beberapa keterbatasan, yaitu:
  • Struct Bahasa C tidak dapat menggunakan operator seperti +,-, dan lain sebagainya pada variabel struct.
  • Tidak terdapat data hiding. Struct bahasa C tidak memperbolehkan penggunaan data hiding. Anggota struct pada bahasa C dapat diakses dengan menggunakan fungsi apapun, dimanapun pada scope dari struct itu sendiri.
  • Struct pada Bahasa C tidak memperbolehkan penggunaan fungsi dalam struct.
  • Struct Bahasa C tidak memiliki anggota tipe data static yang terdapat pada bagian tubuh struct.
  • Pada Bahasa Pemrograman C tidak didukung penggunaan akses modifier, sehingga akses modifier sudah pasti juga tidak bisa digunakan pada struct bahasa C.
  • Struct pada Bahasa C tidak memiliki konstruktor yang terdapat di dalam struct itu sendiri.

Contoh:

struct number

{float x;};


int main()

{

struct number n1,n2,n3;


n1.x=4;

n2.x=3;

n3=n1+n2;


return 0;

}

Output:
prog.c: In function 'main':
prog.c:10:7: error:
invalid operands to binary + (have 'struct number' and 'struct number')
n3=n1+n2;

Bahasa C merupakan salah satu bahasa pemrograman yang telah menjadi dasar dari banyak bahasa lainnya yang lebih modern. Salah satu fitur penting dalam bahasa ini adalah penggunaan **struct** atau struktur, yang memungkinkan pengelompokan data dengan tipe berbeda dalam satu kesatuan yang utuh. Konsep dasar struct ini memberikan fleksibilitas lebih bagi programmer untuk menangani data yang kompleks tanpa harus membuat banyak variabel yang terpisah.

Secara umum, **struct** dapat digambarkan sebagai tipe data yang dapat menampung berbagai elemen data, yang masing-masing bisa memiliki tipe berbeda. Tipe data ini memungkinkan pengelolaan informasi dengan cara yang lebih terstruktur dan efisien. Dalam hal ini, struct seringkali digunakan untuk mendeskripsikan objek-objek dunia nyata yang memiliki beberapa atribut berbeda, seperti mobil dengan atribut warna, merk, dan tahun produksi, atau mahasiswa dengan atribut nama, alamat, dan nomor induk mahasiswa. Dengan menggunakan struct, semua atribut tersebut dapat digabungkan dalam satu kesatuan yang mudah dikelola.

Konsep Dasar Struct

Struct dalam Bahasa C berfungsi untuk menggabungkan berbagai elemen data yang saling berhubungan dalam satu unit. Setiap elemen dalam struct disebut sebagai **member** atau **field**. Setiap member ini bisa memiliki tipe data yang berbeda, misalnya int, float, char, dan tipe data lainnya. Dengan cara ini, struct memungkinkan sebuah program untuk merepresentasikan entitas yang lebih kompleks tanpa memerlukan banyak variabel terpisah.

Penting untuk dipahami bahwa struct bukanlah tipe data yang menyimpan nilai secara langsung. Sebaliknya, struct menyimpan alamat-alamat memori yang merujuk pada nilai-nilai data yang terpisah. Dengan demikian, struct memudahkan pengelolaan data dengan cara yang lebih terorganisir. Sebagai contoh, jika terdapat sebuah program yang perlu menyimpan data tentang mahasiswa, maka program tersebut bisa menggunakan struct untuk menggabungkan informasi nama, umur, alamat, dan jurusan dalam satu kesatuan objek yang lebih mudah dikelola.

Manfaat Penggunaan Struct

Penggunaan struct membawa banyak manfaat dalam pengembangan perangkat lunak. Salah satu manfaat terbesar adalah kemampuan untuk mengelompokkan data yang berbeda dalam satu unit, yang mempermudah proses manipulasi dan pemeliharaan data. Tanpa struct, programmer harus membuat banyak variabel terpisah untuk setiap elemen data yang berbeda. Dengan menggunakan struct, semua elemen data terkait dapat disimpan dalam satu kesatuan yang terstruktur, yang tentu saja akan lebih memudahkan dalam membaca dan memanipulasi data tersebut.

Selain itu, struct juga memungkinkan penggunaan kode yang lebih modular dan lebih mudah dipahami. Dalam kode program yang menggunakan struct, programmer tidak perlu lagi berurusan dengan variabel yang terpisah-pisah. Sebaliknya, kode program dapat bekerja dengan sebuah entitas yang menyatukan data-data yang relevan dalam satu objek. Hal ini mengurangi kompleksitas kode secara keseluruhan dan meningkatkan efisiensi dalam pengembangan program.

Alokasi Memori pada Struct

Setiap struct di dalam Bahasa C memiliki alokasi memori yang terdiri dari blok-blok memori untuk masing-masing anggotanya. Ukuran memori yang dibutuhkan untuk suatu struct akan tergantung pada ukuran tipe data yang terkandung di dalamnya serta urutan deklarasi member dalam struct tersebut. Setiap member pada struct akan mendapatkan ruang memori yang sesuai dengan tipe data yang digunakan. Misalnya, jika sebuah struct memiliki dua anggota dengan tipe data integer (yang masing-masing memerlukan 4 byte) dan satu anggota dengan tipe data float (yang memerlukan 4 byte), maka total ukuran memori yang diperlukan untuk struct tersebut adalah 12 byte.

Namun, perlu diperhatikan bahwa dalam beberapa kasus, alokasi memori dapat dipengaruhi oleh faktor-faktor seperti alignment dan padding. Dalam struktur data komputer, alignment adalah cara untuk memastikan bahwa data disimpan dalam lokasi memori yang sesuai dengan tipe datanya untuk memastikan efisiensi akses. Padding adalah tambahan byte yang dimasukkan antara member untuk menjaga alignment tersebut. Hal ini berarti meskipun struct secara logis mungkin memiliki ukuran yang lebih kecil, alokasi memori aktualnya bisa lebih besar karena adanya padding untuk memenuhi persyaratan alignment.

Akses Anggota dalam Struct

Setelah sebuah struct didefinisikan, programmer dapat mengakses anggota-anggota struct tersebut untuk membaca atau mengubah nilai yang terkandung di dalamnya. Akses terhadap anggota struct dilakukan dengan menggunakan operator titik (dot operator) pada variabel struct. Misalnya, jika terdapat sebuah struct yang menyimpan informasi tentang mahasiswa, akses ke nama mahasiswa dapat dilakukan dengan menulis `mahasiswa.nama`. Dengan menggunakan operator ini, programmer dapat mengakses dan memodifikasi nilai setiap anggota struct dengan cara yang sangat mudah dan langsung.

Akses anggota struct tidak hanya terbatas pada operasi pembacaan atau pengubahan data, tetapi juga pada operasi lainnya, seperti perbandingan atau penghitungan yang melibatkan beberapa anggota struct. Hal ini memberikan fleksibilitas yang besar dalam pengelolaan data kompleks.

Struct dan Array

Struct juga dapat digunakan bersama dengan array untuk menangani kumpulan data yang lebih besar. Dalam hal ini, programmer bisa mendefinisikan array yang terdiri dari beberapa elemen struct. Ini sangat berguna ketika data yang ada terdiri dari banyak entitas yang memiliki atribut yang sama, seperti daftar mahasiswa yang memiliki nama, umur, dan alamat yang perlu disimpan dalam array yang terorganisir. Penggunaan array bersama dengan struct memungkinkan pengelolaan data yang lebih efisien dan terstruktur.

Dengan cara ini, program yang menggunakan struct dan array bisa menangani data dalam jumlah besar tanpa kehilangan struktur dan keterbacaan. Array dari struct memungkinkan setiap elemen dalam array tersebut untuk memiliki data yang lengkap, dan setiap data tersebut tetap terorganisir dengan jelas.

Struct dan Fungsi

Selain itu, struct dapat digunakan dalam fungsi untuk mengoperasikan data yang lebih kompleks. Sebuah fungsi dalam Bahasa C dapat menerima argumen yang bertipe struct, memungkinkan programmer untuk mengelola data kompleks secara langsung di dalam fungsi tanpa harus mengurai data tersebut menjadi banyak variabel terpisah. Fungsi yang menggunakan struct sebagai argumen dapat mengubah nilai anggota struct atau bahkan mengembalikan struct yang telah dimodifikasi.

Namun, ketika struct digunakan sebagai argumen fungsi, penting untuk dicatat bahwa pengoperasian struct pada umumnya dilakukan dengan cara **pass-by-value**, yang berarti salinan dari struct tersebut akan dibuat dan dikirim ke dalam fungsi. Hal ini dapat menyebabkan penggunaan memori yang lebih besar jika struct yang besar digunakan. Untuk mengatasi masalah ini, struct sering kali dipassing dengan **pointer**, sehingga perubahan yang dilakukan dalam fungsi dapat langsung mempengaruhi data asli tanpa membuat salinan.

Struct dan Pointer

Penggunaan pointer dengan struct memberikan fleksibilitas lebih dalam pengelolaan memori. Sebuah pointer dapat digunakan untuk merujuk pada sebuah struct, memungkinkan programmer untuk mengelola data secara dinamis dengan alokasi memori yang lebih efisien. Dengan menggunakan pointer, struct dapat dipassing ke fungsi tanpa menyalin data secara keseluruhan, yang sangat penting dalam kasus struct yang besar atau ketika bekerja dengan struktur data yang lebih kompleks.

Pointer pada struct juga memungkinkan akses langsung ke anggota struct menggunakan operator panah (arrow operator), yang merupakan cara standar dalam mengakses anggota struct yang direferensikan oleh pointer. Ini adalah teknik penting dalam pengelolaan memori dinamis, yang memberikan kontrol lebih besar terhadap alokasi dan pembebasan memori saat runtime.

Kesimpulan

Secara keseluruhan, struct dalam Bahasa C merupakan fitur penting yang memungkinkan pengelompokan data dengan tipe berbeda dalam satu unit yang terstruktur. Penggunaan struct mempermudah pengelolaan data kompleks dan meningkatkan efisiensi serta modularitas kode. Dengan berbagai fitur yang dimilikinya, seperti penggunaan pointer, alokasi memori yang efisien, serta kemudahan dalam pengoperasian data di dalam fungsi, struct menjadi alat yang sangat berharga dalam pemrograman C.

Kelebihan dari penggunaan struct dalam pengelolaan data sangat terlihat dalam aplikasi-aplikasi yang memerlukan pemrosesan data yang kompleks, seperti dalam pembuatan sistem basis data, pemodelan objek dunia nyata, dan banyak aplikasi lain yang membutuhkan struktur data yang terorganisir dengan baik. Dengan pemahaman yang baik mengenai penggunaan struct, programmer dapat menciptakan kode yang lebih efisien, modular, dan mudah dipelihara.

Artikel ini akan dibaca oleh: Ana Sofiana, Anggreani Eka Lestari, Cuwi Nurti Ningrum, David Aldi Ramadhani, dan Diska Choirunnisa.

5 komentar untuk "Struct Bahasa C dan Penjelasannya"

  1. Apa yang dimaksud dengan struct pada bahasa C?

    BalasHapus
    Balasan
    1. Structure atau struct pada bahasa C merupakan cara untuk mengelompokkan beberapa variabel yang saling berkaitan ke dalam suatu lokasi atau tempat yang sama, dimana setiap variabel dalam struktur tersebut dikenal sebagai anggota struktur atau struct.

      Hapus
  2. Bagaimana cara struct didefinisikan pada Bahasa C?

    BalasHapus
    Balasan
    1. Struct bahasa C dapat didefinisikan sebagai suatu entitas tunggal yang menyimpan variabel dari tipe data yang berbeda secara logis yang berkaitan satu sama lain.

      Hapus
    2. Semua anggota data yang terdapat di dalam struct dapat diakses oleh suatu fungsi yang didefinisikan di luar struct pada Bahasa C.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -