Penjelasan dan Cara Mendirikan Struct

Written by: Fajar   |   Updated on: Maret 8, 2018
Penjelasan dan Cara Mendirikan Struct

Penjelasan Data Structure struct

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 ; .

Penggunaan 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;

Dan pembuatan object sendiri itu opsional, kita dapat mendirikan di dalam deklarasi struct atau di luar struct.

Baca :   Tata Letak Memori

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

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.

Baca :   Penjelasan Operator Ternary

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

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

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.

Baca :   Penjelasan Nesting Structure

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.


One Reply to “Penjelasan dan Cara Mendirikan Struct”

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *