Data Structures (struct) adalah salah satu fitur bahasa
pemrograman C/C++, merupakan keyword yang memungkinkan kita untuk membuat
sebuah deklarasi untuk membuat pengelompokan variabel dengan tipe data yang berbeda.
Cara mendeklarasi Struct
Struct merupakan keyword yang memungkinkan membuat deklarasi
yang di dalamnya dapat terdapat banyak variabel, hasil deklarasi ini akan
menghasilkan user-defined data type yaitu tipe structure yang
berguna untuk mendirikan object.
bentuk
penulisan
struct nama_struct{
/*macam-macam deklarasi variabel
*…
*/
}nama_object;
|
Keterangan
nama_struct : merupakan identitas dari struct tersebut.
{
…variabel… } : merupakan
sepasang block, tempat dimana semua variabel dikelompokan sebagai member dari
struct tersebut. pembuatan variabel di dalam struct sama sekali tidak ada
perbedaan dengan mendirikan variabel biasa.
nama_object : merupakan deklarasi yang
menggunakan struct tersebut menjadi tipe data dari deklarasi tersebut. kita
dapat mendirikan banyak object di tempat tersebut, masing-masing dipisahkan
dengan tanda koma , . Object selalu diletakan setelah
penutup block dan sebelum semicolon ;
.
dari nama_struct dan
nama_object merupakan opsional, kita bisa mendirikan tanpa hal tersebut, tapi
kita tidak bisa mengabaikan keduanya. Dan masing-masing tindakan akan membuat
struct memiliki sifat yang berbeda.
Jika kita mendirikan struct tanpa menggunakan nama_struct,
maka kita diharuskan menggunakan object. Jika tindakan ini dilakukan maka akan
membuat struct tidak bisa di pakai di luar deklarasi struct (kita tidak bisa
mendirikan object diluar struct tersebut). biasanya tindakan ini digunakan
untuk membuat sebuah struct yang tidak di anjurkan untuk digunakan (agar tidak
terjadi pembuatan object di luar deklarasi struct).
Contoh
penulisan
struct{
int no_induk ;
std::string
nama;
float nilai ;
}budi;
|
Contoh
Penulisan
struct siswa{
int
no_induk ;
std::string nama;
float nilai ;
};
siswa budi;
|
Penjelasan Object
Struct sebenarnya hanyalah deklarasi untuk membuat sebuah
tipe data baru yang didirikan oleh programmer sebagai data structure. Data
structure tersebut akan digunakan sebagai pembuatan object, pembuatan object
itu dapat dilakukan didalam deklarasi struct atau diluar deklarasi struct.
Pembuaan object sendiri sama seperti pembuatan variabel
seperti biasanya, yang berbeda hanya kita menggunakan tipe structure sebagai
tipe datanya.
Contoh
Program :
#include
<iostream>
#include
<string>
using namespace
std;
int main(){
struct siswa{
int no_induk ;
string
nama;
float nilai ;
}adi,
bambang; //deklarasi object di dalam deklarasi struct
siswa
budi, tono; //deklarasi object di luar struct
return 0;
}
|
Pada
contoh di atas, semua deklarasi object masing-masing akan memiliki isi dari
tipe structure tersebut.
Cara Mengakses Member dari Struct
Member adalah variabel yang didirikan di dalam struct,
dijadikan sebagai satu bagian dari struct.
struct siswa{
string nama; //member
float nilai ; //member
}
|
Kita tidak bisa menggunakan member-member dari struct
sebelum didirikan object yang didirikan menggunakan data structure tersebut.
karena struct hanyalah sebuah rancangan dari tipe structure.
Setelah kita berhasil membuat sebuah deklarasi object. untuk
mengakses member struct dari object tersebut kita membutuhkan Member Access
Operator . di antara nama object dan nama
anggota variabel struct.
Contoh
penulisan
1
2
3
|
budi.noInduk
riski.nama
adi.nilaiUjian
|
Contoh
Proram
#include <iostream>
#include <string>
using namespace std;
struct siswa{
int
no_induk ;
string nama;
float nilai ;
};
int main(){
siswa budi, tono; //deklarasi
object di luar struct
budi.no_induk = 1;
budi.nama = "Budi
Januar";
budi.nilai = 75.5;
tono.no_induk = 2;
tono.nama = "Tono
Laksono";
tono.nilai = 89.9;
cout<<budi.nama<<"
mendapatkan nilai "<<budi.nilai<<endl;
cout<<tono.nama<<"
mendapatkan nilai "<<tono.nilai<<endl;
return 0;
}
|
Cara Inisialisasi object
Inisialisasi adalah
suatu tindakan untuk memberikan nilai awal pada suatu variabel. pada object
kita dimungkinkan untuk memberikan nilai awal dengan beberapa cara yaitu,
non-static member initialization, initializer list, dan uniform initialization.
Non-static
Member
adalah suatu tindakan memberikan nilai awal member structure
kepada object dengan cara memberikan nilai di saat mendirikan member dari
struct. Dengan cara tersebut, nilai inisialisasi akan berlaku ke semua object
yang menggunakan tipe structure tersebut.
Contoh
penulisan
struct siswa{
int no_induk = 0;
string
nama = “ ”;
float nilai = 0;
};
|
Contoh
Program
#include <iostream>
#include <string>
using namespace std;
struct siswa{
int
no_induk = 0;
string nama = "kosong";
float nilai = 0;
};
int main(){
siswa budi, tono;
cout<<budi.nama<<"
mendapatkan nilai "<<budi.nilai<<endl;
cout<<tono.nama<<"
mendapatkan nilai "<<tono.nilai<<endl;
return 0;
}
|
Initializer
List
adalah cara inisialisasi dengan memberikan nilai awal disaat
mendirikan object, nilai tersebut hanya akan berlaku pada object itu sendiri.
Contoh
penulisan
1
|
struct siswa budi = {20103,Budi Kanjeng Berbudi,8.75};
|
Uniform
Initialization
merupakan inisialisasi yang masih sama seperti initializer
list, hanya saja tidak menggunakan tanda =
. Dan cara ini berasal dari C++11.
Contoh
penulisan
1
|
siswa
tono {1, “Tono Ono Loro”, 9,85};
|
Contoh
program
#include <iostream>
#include <string>
using namespace std;
struct siswa{
int
no_induk;
string nama;
float nilai;
};
int main(){
siswa budi={1, "Budi
Januar", 75.5}; //Initializer List
siswa tono{2,"Tono
Laksono", 89.9}; //Uniform Initialization
cout<<budi.nama<<"
mendapatkan nilai "<<budi.nilai<<endl;
cout<<tono.nama<<"
mendapatkan nilai "<<tono.nilai<<endl;
return 0;
}
|
Pada initializer list dan uniform initialization kita
dimungkinkan untuk tidak memberikan nilai awal pada salah satu member struct
dari object. Peraturan tersebut sama seperti peraturan pada pemberian argument
pada function parameter, kita hanya bisa untuk tidak memberi nilai awal ke pada
member yang paling bawah/kanan.
Pada C++11 kita tidak dimungkinkan untuk melakukan dua
metode inisialisasi. Non-static initialization dengan initializer list/uniform
initialization. Hal tersebut akan membuat kompilator mengeluh.
Tapi setelah C++14, kita dimungkinkan untuk menggunakan dua cara
inisialisasi secara bersamaan.
Besar
Memori dari Struct
Deklarasi struct sama sekali tidak memakan memori, struct bisa
dikatakan hanyalah sebuah rancangan, deklarasi struct dibuat untuk membuat tipe
data yang dibuat oleh programmer.
Yang memakan memori adalah Object yang didirikan menggunakan
data structure sebagai tipe datanya. Jumlah memori dari object akan memiliki
besar dari total besar memori member yang ada pada struct tersebut.
Contoh
Program
#include <iostream>
#include <string>
using namespace std;
struct siswa{
int
no_induk;
string nama;
double nilai;
};
int main(){
siswa tono;
cout<<"tono.no_induk =
"<<sizeof(tono.no_induk)<<endl;
cout<<"tono.nama =
"<<sizeof(tono.nama)<<endl;
cout<<"tono.nilai =
"<<sizeof(tono.nilai)<<endl;
cout<<"Total =
"<<sizeof(tono)<<endl;
return 0;
}
|
Tapi terkadang besar dari object akan sedikit lebih besar
dari yang kita perkirakan, hal tersebut disebut sebagai Padding yang
dilakukan oleh kompilator dengan menambahkan sedikit memori kepada struct
tersebut.
0 komentar: