Selasa, 18 Desember 2018

Structure and Union & Memory Allocation

Structure adalah tipe data yang digunakan untuk menyimpan data dengan berbagai tipe data lainnya

Komponen structure disebut sebagai member/field/element, sifatnya heterogen (karena dapat menyimpan berbagai tipe data) dan dalam bahasa pemograman lain structure disebut sebagai record

Syntax :



struct nama_structure {
TipeData_Nama_field1;
TipeData_Nama_field2;
....
};


Cara mengakses structure

struct identitasMahasiswa
{
char nim [10];
char nama [100];
float gpa;
};

int main ()
{
struct identitasMahasiswa budi;
float gpaInput;

scanf("%[^\n]", &budi.nama); /*scan nama si budi kemudian disimpan di structure identitas_mahasiswa*/
scanf("%s", &budi.nim); //scan nim si budi lalu disimpan di structure identitas_mahasiswa
scanf("%f", &gpaInput); //scan gpa
budi.gpa  = gpaInput; // gpa disimpan di structure identitas_mahasiswa
printf("%s %s %.2f",budi.nama,budi.nim,budi.gpa); //lalu di print
return 0;
}

Nah structure identitas_mahasiswa yang dicontohkan termasuk Nested Structure yaitu Structure yang menyimpan beberapa tipe data yang berbeda misalkan dalam satu struct menyimpan data berupa integer /int , char , float.

Typedef : alias atau nama lain
Digunakan untuk mempersingkat nama dalam structure

misalkan
typedef struct MahasiswaBinus
{
char nama[100];
int nim;
float gpa;
}mhs;

mhs adalah nama lain dari struct MahasiswaBinus dan fungsinya untuk tipe data baru
untuk menentukan variabel dari structure gunakan :
mhs budi, cici;

Bit Field : sebuah struct yang elemen atau anggotanya menetapkan jumlah bit tertentu

Syntax :
nama_structure{
type field1: jumlah_bit;
type field2: jumlah_bit;
...
};

Type : hanya bisa menggunakan tipe data unsigned int, signed int, atau int

Union : digunakan untuk memory-join , lokasi memori dapat ditetapkan dengan tipe data yang berbeda dan kapasitas memori yang digunakan adalah kapasitas terbesar yang digunakan oleh elemen atau anggota yang ada di Union tersebut

 Syntax :
union nama_union{
typedata1 nama_variable1;
typedata2 nama_variable2;
...
}nama_variabel_union;

Enumeration : tipe data yang jumlah datanya udah ditentuin

Syntax :
enum tipe_data {
const1 , const2 , const3 , ... ,const_n
}nama_variabel;

Static Keyword : bisa digunakan sebagai tipe variabel atau mengembalikan suatu fungsi
biasanya dialokasikan pada saat program berjalan dan tidak di alokasikan pada akhir program

Default value = 0

Ruang lingkupnya hanya di dalam variabel itu didefinisikan

syntax :

static type nama_variabel ;

contoh

static int input;

Memory Allocation : menggunakan beberapa ruang memory (RAM) yang dikelola oleh OS (Operating System) untuk digunakan oleh program

Memory de-allocation : melepas beberapa ruang memory (RAM) ke OS (Operating System)

Memory Allocation sebagai penyimpanan data :
A. Statis
1. Bisa diberi nama variabelnya
2. Dialokasikan saat program di compile
3. Disimpan di local memory
4. Tidak berubah saat program dijalankan
5. Tidak dialokasikan saat program berakhir

B. Dinamis
1. Dapat diberi nama
2. Dialokasikan saan di-run
3. Disimpan di heap memory
4. Dapat dialokasikan kapan saja

Tidak ada komentar:

Posting Komentar