Dalam bahasa C, Structure atau struct adalah tipe data yang terdiri dari beberapa kumpulan variabel dengan berbagai tipe data lain. Struct dapat menampung lebih dari 1 jenis tipe data. Pada bahasa C, Tipe data struct ini cocok digunakan untuk menampung data yang berkelompok, sehingga kita tidak perlu membuat banyak variabel.
Cara Membuat Struct Pada Bahasa C
Struct dapat dibuat dengan kata kunci struct, lalu diikuti dengan nama struct dan membuat variabel serta isinya.
Contoh :
struct karyawan {
char nama [50];
char alamat[50];
char jabatan[12];
unsigned int umur;
};
Contoh Program :
#include <stdio.h>
#include <string.h>
// membuat struct
struct karyawan {
char nama [50];
char alamat[50];
char jabatan[12];
unsigned int umur;
};
int main(){
// menggunakan struct
struct karyawan pegawai1, pegawai2;
// mengisi nilai ke struct
strcpy (pegawai1.nama, "Rudi");
strcpy (pegawai1.alamat, "Jakarta");
strcpy (pegawai1.jabatan, "Manager");
pegawai1.umur = 34;
strcpy (pegawai2.nama, "Wulan");
strcpy (pegawai2.alamat, "Malang");
strcpy (pegawai2.jabatan, "Supervisor");
pegawai2.umur = 28;
// mencetak isi struct
printf("##==== Data Karyawan 1 ====##\n");
printf("Nama: %s\n", pegawai1.nama);
printf("Alamat: %s\n", pegawai1.alamat);
printf("Alamat: %s\n", pegawai1.jabatan);
printf("Umur: %d\n", pegawai1.umur);
printf("\n");
printf("##==== Data Karyawan 2 ====##\n");
printf("Nama: %s\n", pegawai2.nama);
printf("Alamat: %s\n", pegawai2.alamat);
printf("Alamat: %s\n", pegawai2.jabatan);
printf("Umur: %d\n", pegawai2.umur);
return 0;
}
Keterangan :
Di baris ke 2, kita memanggil library string.h untuk menangani string, hal ini karena kita akan menggunakan fungsi strcpy. jika kita tidak menggunakan library ini, maka akan muncul warning seperti gambar berikut :
Di baris 5 – 9, maksudnya kita membuat tipe data struct dan harus ditulis sebelum main(). pada contoh ini saya membuat tipe data “karyawan”. Setelah itu kita membuat variabel nama, alamat,jabatan dan umur. Untuk setiap variabel, tipe data asalnya tetap harus ditulis.
Di baris 15, kita mendefinisikan variabel pegawai1 dan pegawai2 sebagai struct karyawan
Di baris 18 – 26, melakukan proses pengisian data ke dalam variabel pegawai1 dan pegawai2. fungsi strcpy digunakan karena variabel nama, alamat, jabatan adalah string. Sedangkan untuk umur bisa diisi secara langsung.
Di baris 29 – 40 merupakan bagian akhir kode program. Disini kita akan menampilkan keempat data dari variabel pegawai1 dan pegawai2.
Hasilnya :
Cara menggunakan Struct dengan pointer
Pada contoh kode program dibawah ini masih sama saja seperti sebelumnya, namun disini kita menggunakan pointer * untuk tipe data string. Agar lebih jelas lihat contoh kode program berikut :
#include <stdio.h>
// membuat struct
struct karyawan {
char *nama;
char *alamat;
char *jabatan;
int umur;
};
void main(){
// menggunakan struct
struct karyawan pegawai1, pegawai2;
// mengisi nilai ke struct
pegawai1.nama = "Rudi";
pegawai1.alamat = "Jakarta";
pegawai1.jabatan = "Manager";
pegawai1.umur = 34;
pegawai2.nama = "Wulan";
pegawai2.alamat = "Malang";
pegawai2.jabatan = "Supervisor";
pegawai2.umur = 28;
// mencetak isi struct
printf("##==== Data Karyawan 1 ====##\n");
printf("Nama: %s\n", pegawai1.nama);
printf("Alamat: %s\n", pegawai1.alamat);
printf("Alamat: %s\n", pegawai1.jabatan);
printf("Umur: %d\n", pegawai1.umur);
printf("\n");
printf("##==== Data Karyawan 2 ====##\n");
printf("Nama: %s\n", pegawai2.nama);
printf("Alamat: %s\n", pegawai2.alamat);
printf("Alamat: %s\n", pegawai2.jabatan);
printf("Umur: %d\n", pegawai2.umur);
}
Adapun hasil outputnya juga tetap sama seperti sebelumnya. Untuk pembahasan pointer ini nanti akan saya siapkan artikel khususnya.
Menggunakan typedef pada Struct
Perintah typedef adalah kata kunci untuk mendefinisikan tipe data baru. Salah satu penggunaan typedef ini yaitu sering di kombinasikan dengan struct agar kode program lebih singkat dan optimal. Kita dapat menggunakan typedef ini di depan struct untuk menyatakan sebagai tipe data baru.
Contoh :
Jika tanpa typedef kita akan menggunakan struct seperti ini.
struct karyawan {
char *nama;
char *alamat;
char *jabatan;
int umur;
};
Maka dengan menggunakan typedef akan menjadi seperti in i:
typedef struct karyawan {
char *nama;
char *alamat;
char *jabatan;
int umur;
} Perusahaan;
Struct Bersarang
Struct dapat dibuat bersarang (nested). Bersarang artinya ada struct di dalam struct.
Contoh:
#include <stdio.h>
struct nilai{
char Matkul[20];
float ip;
};
struct mahasiswa{
char nama[20];
char nim[10];
struct nilai nl;
};
void main(void){
struct mahasiswa mhs ={"Budiono","1200574",{"Teknik Informatika",3.1}};
printf("Nama : %s\n"
"Nim : %s\n"
"Matkul : %s\n"
"ip : %.2f\n"
,mhs.nama,mhs.nim,mhs.nl.Matkul,mhs.nl.ip);
}
Hasilnya :
Passing Struct ke dalam Fungsi Pada Bahasa C
Passing struct yaitu membuat struct sebagai parameter untuk fungsi. Disini kita akan melewatkan variabel struct sebagai argumen ke suatu fungsi (passing struct to function).
Contoh program :
#include <stdio.h>
struct mahasiswa
{
char nama[50];
int umur;
};
// prototype fungsi
void tampilkan(struct mahasiswa info);
int main()
{
printf("==== Input data ====\n\n");
struct mahasiswa mhs;
printf("Masukkan Nama: ");
scanf("%[^\n]%*c", mhs.nama);
printf("Masukkan Umur: ");
scanf("%d", &mhs.umur);
tampilkan(mhs); // passing struct as an argument
return 0;
}
void tampilkan(struct mahasiswa info)
{
printf("\n==== Info Data ====\n\n");
printf("Nama: %s", info.nama);
printf("\n Umur: %d", info.umur);
printf("\n");
}
Hasilnya :
Begitulah pembahasan mengenai penggunaan Tipe Data Struct pada bahasa C. Untuk selanjutnya kita akan membahas Penggunaan Tipe Data union.
Semoga bermanfaat …