Artikel Terbaru

8 Pertimbangan yang Harus Dilakukan untuk Memilih Wallet Bitcoin

Wallet Bitcoin adalah program yang digunakan untuk mengirim dan menerima data transaksi Bitcoin, menyimpan catatan Bitcoin, dan memantau saldo Bitcoin. Sama seperti ketika seseorang memerlukan program email yang digunakan untuk mengelola data email -nya, pada Bitcoin juga terdapat program sejenis yang dapat digunakan untuk mengelola data Bitcoin tersebut, berupa wallet interface pada setiap node blockchain Bitcoin. Wallet digunakan untuk memantau alamat Bitcoin pada blockchain dan juga dapat digunakan untuk memperbarui saldo Bitcoin pada setiap transaksi.

2 Contoh Program Penggunaan Array Shalow Copy pada Bahasa C

Pada bahasa C dan C++ array dapat membuat variabel struct menuju ke variabel lainnya dengan tipe data yang sama. Ketika diciptakan variabel struct menuju ke semua anggota dari variabel, maka variabel tersebut akan diduplikasikan ke variabel struct lainnya. 

Pada program C++ berikut variabel struct st1 mengandung pointer ke alokasi memori dinamis. Ketika st1 diarahkan menuju ke st2, maka pointer str dari st2 juga akan menuju ke lokasi memori yang sama. Bentuk duplikasi ini disebut dengan istilah shallow copy.

# include <iostream>

# include <string.h>

using namespace std;

 

struct test

{char *str;};

 

int main()

{

struct test st1, st2;

st1.str = new char[20];

strcpy(st1.str, "MakanNasiPadang");

 

st2 = st1;

st1.str[0] = 'X';

st1.str[1] = 'Y';

 

// Karena proses copy yang

// dangkal (shallow), maka

// kedua nilai string adalah

// sama

cout << "st1's str = " << st1.str << endl;

cout << "st2's str = " << st2.str << endl;

return 0;

}

Output:
st1’s str = XYkanNasiPadang
st2’s str = XYkanNasiPadang

Dari contoh program sebelumnya, hal yang perlu diingat adalah array tidak bisa melakukan shallow copiy, sehingga kompilator secara otomatis akan melakukan deep copy untuk anggota array. Pada program berikut struct test mengandung anggota array str[]. Ketika st1 diarahkan menuju ke st2, maka st2 akan memiliki duplikat baru dari array. Sehingga st2 tidak mengalami perubahan ketika str[] berubah dari posisi awal st1.

# include <iostream>

# include <string.h>

using namespace std;

 

struct test

{char str[20];};

 

int main()

{

struct test st1, st2;

strcpy(st1.str, "MakanNasiPadang");

 

st2 = st1;

st1.str[0] = 'X';

st1.str[1] = 'Y';

 

// Karena proses copy yang

// dalam (deep), maka nilai

// kedua array berbeda.

cout << "st1's str = " << st1.str << endl;

cout << "st2's str = " << st2.str << endl;

 

return 0;

}

Output:
st1’s str = XYkanNasiPadang
st2’s str = MakanNasiPadang


Oleh karena itu, untuk class pada C++, tidak perlu ditulis konstruktur salinan, juga operator penugasan yang digunakan untuk anggota array, karena sifat default-nya adalah deep copy ke array.

Komentar

  1. Apa yang dimaksud dengan shallo copy pada bahasa C?

    BalasHapus
    Balasan
    1. Shallow copy atau copy-an dangkal dalam konteks khusus berarti user melakukkan proses copy "referensi" baik itu berupa pointer, atau apapun datanya, ke dalam suatu objek, dan menyimpan dukungan referensinya atau pointer tersebut secara identik, pada lokasi yang sama dalam memori yang sama.

      Hapus
    2. Shallow copy adalah salinan yang berasal dari suatu object pada bahasa H. Object baru yang telah di-copy tersebut memiliki salinan yang sama persis dari nilai-nilai object aslinya. Jika salah satu bidang object tersebut adalah referensi ke object lain, maka hanya alamat referensinya saja yang disalin, yaitu berupa alamat memori.

      Hapus
  2. Apa perbedaan antara shallow copy dan deep copy pada bahasa C?

    BalasHapus
    Balasan
    1. Shallow copy membangun object gabungan yang baru dan kemudian menyisipkannya ke referensi dalam object aslinya. Sedangkan deep copy membangun object gabungan baru dan secara rekursif menyisipkan salinan object tersebut ke lokasi aslinya secara mendalam (deep).

      Hapus

Posting Komentar

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung. :D

Catatan: setiap iklan yang ditayangkan pada blog ini bersumber dari google adsense. Dengan jenis iklan yang dipilih adalah, sebagai berikut.

POIN 1, Iklan yang ditampilkan hanya boleh berbahasa indonesia atau berbahasa inggris. Tidak menerima jenis iklan dalam bahasa yang lain selain yang telah disebutkan karena blog ini dibuat untuk para pengunjung dari negara atau orang yang berbahasa Indonesia.

POIN 2, Setiap gambar yang ditampilkan pada iklan sifatnya tidak mengganggu para pengunjung yang melihat blog, atau tidak boleh menampilkan gambar yang bersifat menjijikkan atau merangsang rasa mual.

POIN 3, Jenis iklan yang dipasang bukan merupakan iklan spam, atau berisi dan mengarahkan pengunjung ke alamat yang berbahaya atau bersifat penipuan.

POIN 4, Segala bentuk iklan tunduk dan patuh pada ketentuan dari pihak Adsense google dan pemilik blog.

POIN 5, Segala jenis iklan yang tidak bertentangan dengan poin 1-4 yang dijelaskan sebelumnya, maka iklan tersebut dapat ditampilkan pada blog.

POIN 6, Jika ada pihak ketika yang ingin memasang iklan pada blog ini secara langsung, maka dapat menghubungi pemilik blog melalui kontak 0882 3218 8316.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Perbedaan stdio.h dan stdlib.h pada Bahasa C

6 Tahap Utama dalam Melakukan Kompilasi Program Hello World Java

Perbedaan Antara int main() dan int main(void) pada Bahasa C

Enkapsulasi pada Java

3 Jenis Utama Looping pada Java