Tujuan Pembelajaran

Struktur Record

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;

Mengapa Memerlukan Record/Struct?

Mengakses Record

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

Record di dalam Record

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);
}