Sebelumnya kita sudah belajar array.
array hanya menyimpan kumpulan data yang memiliki satu tipe yang sama
akan tetapi bagaimana jika kita ingin menyimpan yang tipenya berbeda beda?
caranya menggunakan struct
contoh pemakaian:
struct data{
int id;
char nama[100];
}
jadi diatas kita menyiapkan suatu struktur data yang isinya adalah integer id dan string nama
tapi diatas masih blueprintnya, kita butuh membuat variabelnya.
caranya : data data1;
bisa juga : data data1[100];
tergantung pemakaiannya buat apa
nah sekarang contohnya kita ingin menyimpan data 30 siswa
struct data{
int id;
char nama[100];
}datasiswa[30];
//diatas kita buat global variabel berupa array 30 element karena kita ingin menyimpan data 30 anak
int main(){
int n;
for(n=0;n<30;n++){
scanf ("%d %s",&datasiswa[n].id,datasiswa[n].nama);
}
//diatas kita melakukan penyimpanan sebanyak 30x karena kita mau simpan 30data anak
for(n=0;n<30;n++){
printf("%d %s\n",datasiswa[n].id,datasiswa[n].nama);
}
//diatas kita melakukan print 30 data anak diambil dari struct
MEMORY ALLOCATION
Jika kita coding biasa, semua variabel kita disimpan di stack.
stack akan langsung menghapus data kita seketika prosesnya sudah selesai di eksekusi.
akan tetapi heap beda.
ketika proses slesai, variabel yang ditampung disana tidak langsung dihapus kecuali kita memerintahkan untuk menghapus.
untuk meletakkan variabel kita di heap, kita butuh yang namanya memory allocation
kita mengalokasi address variabel kita ke address yang ada di heap
ada yang namanya : malloc, realloc, free
pada C contoh penggunaannya :
int *hp = (int*)malloc(sizeof(int));
//pada case ini, kita mengambil slot untuk menampung integer pada heap dan hp menampung memori tempat kita akan menyimpan di heap
kemudian kita assign value kita dengan cara biasa seperti poitner biasa
setelah selesai digunakan, kita harus menghapus apa yang sudah kita pakai di heap karena heap tidak otomatis menghapus seperti stack
maka cara penghapusannya :
free (hp);
Tidak ada komentar:
Posting Komentar