struct namaRecord{
// Field atau inisialisasi variabel di dalam record `namaRecord`
char nama[128]; // Field array char bernama `nama` yang berada di record `namaRecord`
int umur;
float gpa;
};
// Atau membuat struct sebagai tipe data buatan
typedef struct{
char nama[128];
int umur;
float gpa;
} Mahasiswa;
Untuk menghindari penggunaan banyak variabel yang tidak efisien saat menyimpan data yang kompleks, misalnya data mahasiswa.
Contoh:
typedef char string[100];
int main()
{
string nama1, nama2, nama3, nama4, nama5, ...
int umur1, umur2, umur3, ...
float gpa1, gpa2, gpa3, ...
}
typedef struct{
string nama;
int umur;
float gpa;
} Mahasiswa;
int main()
{
Mahasiswa M1,M2,M3;
}
Field di dalam suatu record dapat diakses dengan memanggil variabel record lalu diikuti dengan tanda titik . dan diakhiri dengan nama field pada record tersebut.
tipeDataRecord record;
record.namaField;
// Contoh sebelumnya
printf("%s\\n", M1.nama); // Dalam printf memanggil string nama di dalam record M1
Perhatikan kode berikut!
<aside> 📑 Code:
</aside>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char string[128];
typedef struct{
string nama;
string nip;
} DosenPembimbing; // Sebuah tipe data record bernama DosenPembimbing
typedef struct{
string nama;
int umur;
float gpa;
DosenPembimbing dosen;
} Mahasiswa; // Sebuah tipe data record bernama Mahasiswa
/*
Record Mahasiswa dan DosenPembimbing,
di mana setiap Mahasiswa hanya memiliki satu DosenPembimbing sebagai 'dosen'
*/
int main()
{
Mahasiswa M1; // Deklarasi M1 sebagai Mahasiswa (tipe data buatan)
// Inisialisasikan
strcpy(M1.nama, "Arwindo"); // Karena string, memakai strcpy dari library string.h
M1.umur = 21;
M1.gpa = 3.8;
strcpy(M1.dosen.nama, "Wil");
strcpy(M1.dosen.nip, "123");
printf("Nama : %s\\n", M1.nama);
printf("Umur : %d\\n", M1.umur);
printf("GPA : %.2f\\n", M1.gpa);
printf("Dospem: %s\\n", M1.dosen.nama);
printf("NIP Dosen: %s\\n", M1.dosen.nip);
}