Structures, Union, dan Alokasi Memori
Definisi Structure
Structure adalah sebuah tipe data untuk menyimpan sekumpulan data dengan berbagai tipe data. Komponen structure disebut member/field/element. Structure dalam bahasa pemrograman yang lain disebut juga record.
Syntax:
struct name_structure {
dataType1 name_field1;
dataType2 name_field2;
…
};
/*Variabel dapat didefinisikan saat pendeklarasian*/
struct name_structure {
dataType1 name_field1;
dataType2 name_field2;
…
} name_variable_structure ;
Mengakses Structure
Element (field) dari sebuah structure dapat diakses atau dipanggil menggunakan dot operator (.).
Contoh Program:
# include <stdio.h>
# include <string.h>
struct mhs {
char nim[9];
char name[26];
float gpa;
};
int main (){
struct mhs lia;
float wgpa;
scanf("%s", &lia.nim);
fflush(stdin);
gets(lia.name);
scanf("%f", &wgpa);
lia.gpa = wgpa;
printf("%s %s %.2f",
lia.nim, lia.name, lia.gpa);
return 1;
}
Local Structure
# include <stdio.h>
# include <math.h>
void main() {
struct {
int x, y;
} tA, tB;
float dist;
printf(“A position: \n ");
printf(“x and y position? ");
scanf("%d %d", &tA.x, &tA.y);
printf("\nB position : \n ");
printf(“x and y position? ");
scanf("%d %d", &tB.x, &tB.y);
dist = sqrt(pow((tA.x - tB.x), 2) +
pow((tA.y - tB.y), 2));
printf("\nDistance between A and B = %.2f unit", dist);
}
Contoh Program:
Structure adalah sebuah tipe data untuk menyimpan sekumpulan data dengan berbagai tipe data. Komponen structure disebut member/field/element. Structure dalam bahasa pemrograman yang lain disebut juga record.
Syntax:
struct name_structure {
dataType1 name_field1;
dataType2 name_field2;
…
};
/*Variabel dapat didefinisikan saat pendeklarasian*/
struct name_structure {
dataType1 name_field1;
dataType2 name_field2;
…
} name_variable_structure ;
Mengakses Structure
Element (field) dari sebuah structure dapat diakses atau dipanggil menggunakan dot operator (.).
Contoh Program:
# include <stdio.h>
# include <string.h>
struct mhs {
char nim[9];
char name[26];
float gpa;
};
int main (){
struct mhs lia;
float wgpa;
scanf("%s", &lia.nim);
fflush(stdin);
gets(lia.name);
scanf("%f", &wgpa);
lia.gpa = wgpa;
printf("%s %s %.2f",
lia.nim, lia.name, lia.gpa);
return 1;
}
Local Structure
# include <stdio.h>
# include <math.h>
void main() {
struct {
int x, y;
} tA, tB;
float dist;
printf(“A position: \n ");
printf(“x and y position? ");
scanf("%d %d", &tA.x, &tA.y);
printf("\nB position : \n ");
printf(“x and y position? ");
scanf("%d %d", &tB.x, &tB.y);
dist = sqrt(pow((tA.x - tB.x), 2) +
pow((tA.y - tB.y), 2));
printf("\nDistance between A and B = %.2f unit", dist);
}
Output:
A position:
x and y position? 5 10
B position :
x and y position? 15 15
Distance between A and B = 11.18 unit
Nested Sturcture
Nested Structure atau yang sering disebut structure di dalam structure adalah structure yang salah satu elemennya adalah structure lain. Structure yang menjadi anggota harus dinyatakan sebelumnya.
Array of Structure
Array of Structure artinya kita mendeklarasikan array yang elemennya beruba structure.
Contoh Program:
# include <stdio.h>
# include <string.h>
struct tmhs {
char nim[9];
char name[26];
float gpa;
};
int main (){
struct tmhs arr[50], x;
...
scanf("%s", &arr[0].nim);
...
x = arr[0];
arr[0] = arr[1];
arr[1] = x;
for (i = 0; i < 50; i++) {
printf("%s %s %.2f",
arr[i].nim, arr[i].name,
arr[i].gpa);
}
return 1;
}
Typedef
Typedef digunakan untuk memberi nama lain (alias).
Contoh Program:
#include <stdio.h>
#include <conio.h>
typedef struct Employee {
int id;
char name[32];
}EMP;
int main(void)
{
EMP info = {1,"B. Smith"};
printf(“Employee name: %s\n", info.name);
printf(“Employee ID: %04d\n\n", info.id);
getch();
return 0;
}
Bit Field
Sebuah struct yang masing-masing elemennya mempunyai jumlah bit tertentu.
Syntax:
struct name{
type field1: numberof_bit;
…...
};
Type : hanya dapat menggunakan unsigned int, signed int, atau int.
Definisi Union
Union adalah tipe data khusus untuk menyimpan berbagai jenis data di lokasi memori yang sama. Contoh Program:
union name_union{
typedata1 name_var1 ;
typedata2 name_var2;
……
} name_var_union;
Enumerasi
Enumerasi adalah tipe data dengan jumlah data yang telah ditentukan.
Contoh Program:
enum name_type {
const1, const2,… const_n
}name_var;
Static Keyword
Keyword static dapat digunakan sebagai variable type atau return value (nilai kembalian) type sebuah function.
Variabel Static:
- Dialokasikan pada saat program dimulai dan tidak dialokasikan pada akhir program.
- Nilai default = 0
- Scope variabel static ada di dalam file di mana variabel didefinisikan.
Contoh Program:
#include <stdio.h>
void print()
{
static int count=0;
printf("count=%d\n",count++);
}
int main(void)
{
int i;
for(i=0; i<5; i++) print();
for(i=0; i<3; i++) print();
return 0;
}
Output:
count = 0
count = 1
count = 2
count = 3
count = 4
count = 5
count = 7
Variabel Register
Tujuan: meningkatkan kecepatan run time.
Syntax: register data_type variable_name;
Contoh: register int x;
Variabel Eksternal
Dalam sebuah modular programming, sebuah program dibagi ke beberapa modul. Dalam bahasa C modul diimplementasikan menggunakan function. Jika function di suatu file ingin mengakses sebuah variabel di file lain, gunakan keyword ekstern.
Contoh: extern int x;
Conts Char*
Membandingkan char* dengan const char* menggunakan strcpy.
Contoh: char *strcpy( char *strDestination, const char *strSource );
Deskripsi:
char * : harus pointer (mempunyai alamat)
const char * : dapat menjadi string atau pointer
Alokasi Memori
- Alokasi memori: memperoleh memory space (RAM) yang dikelola oleh OS untuk digunakan oleh program.
- De-alokasi memori: melepaskan memory space (RAM) kembali ke OS.
Contoh:
int main() {
long nim;
float gpa;
...
}
Contoh Program:
# include <stdio.h>
# include <stdlib.h>
int main() {
int *arr, n, i;
do {
fflush(stdin);
printf(“total element ? ");
scanf("%d", &n);
if (n == 0) break;
arr = (int *) malloc (n * sizeof(int));
printf(“Input %d numbers: ", n);
for (i = 0; i < n; i++) scanf(“%d", &arr[i]);
printf(“reversed: ");
for (i = n - 1; i >= 0; i--) printf("%d ", arr[i]);
printf("\n\n");
free(arr);
}while (1);
return 1;
}
Array Dynamic Memory Allocation
int *arr;
printf(“total element ? ");
scanf("%d", &n);
arr = (int *) malloc (n * sizeof(int));
//total element ? 3
Array of Pointer of Dynamic Structure
# include <stdio.h>
# include <stdlib.h>
struct takad {
char nim[9];
float gpa;
} ;
int main() {
struct takad *akad[100];
int n, i;
float total = 0, rerata;
...
}
Pointer of Array of Dynamic Structure
# include <stdio.h>
# include <stdlib.h>
struct takad {
char nim[9];
float gpa;
} ;
int main() {
struct takad *akad;
int n, i;
float total = 0, rerata;
Pointer to Functions
Pointer to function adalah alamat dari sebuah function di dalam memori.
Syntax: return_type (* pointer_name)(parameter);
Contoh: int (*compare)(int a, int b);
Sources:
http://belajarpemrogramancplusplus.blogspot.com/2015/11/Pembahasan-Structure-of-Array-dan-Array-of-Structure-pada-Pemrograman-C.html
http://blog.pointopoin.com/2016/11/union-pada-bahasa-pemrograman-c.html
http://blog.pointopoin.com/2016/11/union-pada-bahasa-pemrograman-c.html
Comments
Post a Comment