Pointer (dideklarasikan pakai tanda *) adalah variabel yang menyimpan alamat dari variabel lain. Pointer ini nggak bisa nyimpen value, value yang dia simpan adalah alamat dari variabel lain itu sendiri. Contoh penulisannya nih: *ptr_name
int i, *ptr;
ptr= &i;
*ptr= 5;
Berarti, nilai i sama dengan 5, karena ptr menunjuk ke arah i, yang mana kalau kita mengubah nilai ptr, nanti i akan berubah secara otomatis. Sama halnya kalau kita memanggil ptr untuk dicetak, nanti nilai yang ditampilkan adalah i, karena secara nggak langsung kita mencetak nilai i. Kembali lagi ke deskripsi awal tadi, ptr nggak bisa menyimpan nilai yang hakiki, dia cuma bisa menunjuk suatu variabel. Kalau kayak kata dosen praktikum, pointer ini kayak arwah yang cuma bisa rasukin manusia, tapi gak punya jasad. Ea, kebanyakan nonton film Insidious tuh.
Nah, selain pointer biasa, ternyata ada lagi yang namanya double pointer. Bahkan nggak cuma double, tapi triple dan kelipatan lain! Maksudnya ini apa? Yaah sama aja sih gunanya, sama-sama cuma untuk ‘nunjuk’, nggak bener-bener punya nilai, hanya menyimpan nilai alamat dari suatu variabel. Tapi bedanya nih, kalo double pointer (**) cuma bisa nyimpen nilai single pointer (*), dan triple pointer (***) juga cuma buat nunjuk ke double pointer (**) Ibaratnya, bintangnya dikurang satu, baru bisa menyimpan alamat si pointer sebagai nilai. Tapi sebenarnya triple pointer aja udah jarang digunakan, jadi walaupun kuartet pointer atau lima bintang pointer bisa kita gunain, tapi tetep aja fungsinya kurang bisa diterapin untuk ngoding. Katanya juga, pointer jarang keluar buat test live coding. Kalo gak salah sih gitu ya.
Nah abis pointer ada lagi yang namanya array. Kalau buat yang udah pernah ngejajal matkul Alpro sebelumnya kayak saya mah pasti udah nggak asing sama istilah larik ini. Belum lagi, array di C juga digunakan untuk ngebentuk string, yaitu array of char, karena di C nggak bisa mengenal tipedata string. Nah rupa rupanya ini, si array juga termasuk pointer, tapi konstan. Array juga bisa menyimpan data, tapi datanya banyak, dan harus homogen, dan bisa random access pula. Asal sudah dideklarasikan sebelumnya. Contoh:
int x[100];
berarti x adalah variabel array dengan tipe data integer dan punya elemen 0-99.
Array ini bisa berguna untuk nyimpen skor atau nilai, untuk bikin deret angka, atau untuk absen nama (pakai array of char 2D)
kalau tau-tau kita mau memasukkan nilai salah satu elemen array, bisa kita deklarasi kan jadi:
x[8]=90;
bedanya sama pointer, kalau mau mendeklarasi nilai, harus berbentuk alamat. misal:
*ptr= &b; (contoh yang benar) | *ptr= b; (contoh yang salah)
kalau tadi kita mendeklarasi nilai x, berarti *x adalah *x[0]; tinggal *(x+1) kalau mau nambahin elemennya.
Nah berlanjut ke array 2 D, array dua dimensi ini gunanya sama kayak matriks. Cara ngedeklarasikannya juga tinggal begini:
int arr[2][2]= {(1, 2), (3,4)};
bisa juga
int arr[2][2]={
1,2
3,4
}
Menurut aturan RMO, row major order, penulisan matriks dari array 2D ini musti per baris, bukan per kolom. Biar gampang kalau mau langsung diberi nilainya. Dan selanjutnya ada juga aray of pointer. Pointernya punya array, dan bisa menyimpan banyak alamat. Tujuannya sama aja kayak pointer biasa.
Yah segitu lah kira-kira yang saya dapat dari pertemuan yang diadakan di K3A Syahdan kemarin. Semangat kuis, yosh!
This entry was posted on Sunday, November 1st, 2015 at 10:42 am and is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply
Logged in as waiting4miracle. Logout »