• Tidak ada hasil yang ditemukan

A.Dasar teori1.Pointer Pointer

N/A
N/A
Protected

Academic year: 2022

Membagikan "A.Dasar teori1.Pointer Pointer"

Copied!
1
0
0

Teks penuh

(1)

Pointer

A. Dasar teori 1. Pointer

Pengertian

Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua.

Deklarasi Variabel dan Pointer

Dalam bahasa C / C++ terdapat format dalam deklarasi variabel. Format deklarasi variabel dalam bahasa C / C++ adalah sebagai berikut:

Seperti halnya variabel lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan. Bentuk umum deklarasi pointer adalah :

Setiap variabel yang dideklarasikan disimpan di dalam slot - slot memory yang memiliki nomor sendiri – sendiri. Dengan pointer kita dapat mengetahui nomor – nomor memory ini dan sekaligus memanipulasi isi dari variabel yang “ditunjuk”

oleh pointer ini.

Agar suatu variabel pointer dapat menunjuk ke variabel lain, variabel pointer ini harus diisi dengan alamat dari variabel yang hendak ditunjuk. Sintaksis proses penunjukan pointer ke variabel lain adalah:

Pernyataan pertama merupakan deklarasi variabel biasa (yang hendak ditunjuk oleh pointer) bernama nama_variabel_biasa dengan tipe data tipe_data1.

Pernyataan kedua merupakan deklarasi variabel pointer bernama nama_variabel_pointer dengan tipe data tipe_data2. Sedangkan pernyataan ketiga

tipe_data nama_variabel

tipe_data *nama_pointer

tipe_data1 nama_variabel_biasa;

tipe_data2 *nama_variabel_pointer;

nama_variabel_pointer=&nama_variabel_biasa;

(2)

adalah pengisian variabel pointer nama_variabel_pointer dengan alamat variabel nama_variabel_biasa (yang hendak ditunjuknya).

Mengakses Variabel Dengan Pointer

Dalam bahasa C / C++ kita bisa mengakses variabel dengan dua cara yaitu :

 Secara langsung

Metode ini adalah metode paling dasar dan paling sering digunakan sebagai cara yang umum untuk melakukan akses ke dalam variabel. Akses ini berupa pemberian nilai atau pengembalian nilai kembalian. Metode ini menjadi standar dalam deklarasi variabel di bahasa C / C++. Syntax yang digunakan adalah :

tipe_data nama_variabel;

tipe_data nama_variabel = nilai variabel;

 Secara tidak langsung dengan menggunakan pointer

Karena pointer adalah variabel yang menunjuk variabel lain, maka kita dapat mengakses variabel lain dengan memanipulasi nilai yang ruangan memory-nya ditunjuk oleh pointer tersebut. Dalam bahasan pointer ada dua operator yang memegang kunci operasi pada pointer, yaitu operator & dan operator *.

 Operator &

Operator & merupakan operator alamat. Pada saat pendeklarasian variabel, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time. Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti "address of". Contoh : tif = &ub;

Penulisan tersebut berarti akan memberikan variable tif alamat dari variable ub. Karena variabel ub diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi variabel.

 Operator *

Operator * merupakan operator reference. Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan mem- berikan awalan operator asterisk (*) pada identifier pointer, yang berarti

"

value pointed by". Contoh : tif = *ub; Penulisan tersebut berarti nilai variabel tif sama dengan nilai yang ditunjuk oleh variabel ub.

(3)

Kemudian dalam teknis penggunaan pointer, pengaksesan variabel dilakukan dengan cara menggunakan kedua operator tersebut. Jika kita ingin melihat alamat dari variabel yang ditunjuk kita gunakan operator &.

Sedangkan untuk mengetahui nilai variabel yang ditunjuk kita gunakan operator *.

2. Struct

Definisi

Beberapa variabel (dapat berbeda tipe) yang dikelompokkan menjadi satu dengan sebuah nama baru.

Penggunaan Struct

Struct digunakan untuk membuat tipe data baru.

Contoh:

struct motor {

float volts; //voltage of the motor

float amps; //amperage of the motor int phases; //# of phases of the motor float rpm; //rotational speed of motor };

typedef struct motor motor;

Cara Menggunakan Tipe Data Baru

 motor p, q, r;

Mendefinisikan tiga variable – p, q, dan r – masing masing bertipe data motor

 motor M[25];

Mendeklarasikan array M berisi 25 data bertipe motor

 motor *m;

Mendeklarasikan variabel pointer yang menyimpan alamat slot memori yang berisi data bertipe motor

Cara Membuat Struct

Bentuk umum dalam mendefinisikan dan mendeklarasikan struktur adalah sebagai berikut:

struct nama_tipe_struktur {

tipe field1;

tipe field2;

...

(4)

...

tipe fieldn;

}

variabel_struktur;

Cara Mengakses Elemen Struct

Elemen dari struktur dapat diakses dengan menggunakan bentuk

variabel_struktur.nama_field

Antara variabel_struktur dan nama_field dipisahkan dengan operator titik (disebut operator anggota struktur).

Contoh:

 Deklarasi

motor p;

motor q[10];

 Maka cara pengaksesannya:

p.volts — is the voltage p.amps — is the amperage

p.phases — is the number of phases p.rpm — is the rotational speed q[i].volts — is the voltage of the ith motor q[i].rpm — is the speed of the ith motor

3. Pointer pada struct

Cara Memasukkan Alamat Struct ke Pointer

Seperti halnya pointer untuk variabel biasa yang menunjukkan alamat letak dari nilai variabelnya, pointer untuk struktur juga menunjukkan alamat letak dari variabel strukturnya. Pointer untuk struktur juga dideklarasikan secara sama dengan variabel pointer biasa, yaitu dengan menggunakan asterisk di muka nama variabel pointernya.

Berikut ini adalah contoh deklarasi variabel pointer untuk struktur ini:

struct {

char Nama[5];

float IP;

}

Mahasiswa, *PM;

PM = &Mahasiswa;

(5)

Atau:

struct {

char Nama[5];

float IP;

}

Mahasiswa, *PM = &Mahasiswa;

Cara Mengakses Elemen - Elemen Struct Via Pointer

Telah diketahui bahwa nilai-nilai elemen suatu struktur dapat diakses dengan menggunakan operator titik (‘.’). Selain dapat menggunakan operator titik, untuk operasi pointer dapat juga digunakan operator ‘->’ atau operator ‘*’ untuk mengakses elemen-elemen suatu struktur. Misalnya untuk mengakses nilai elemen IP dari variabel struktur Mahasiswa dapat dilakukan dengan menggunakan nama variabelnya atau dengan pointer yang menunjuk ke nama variabelnya sebagai berikut:

nama_struct.nama_elemen Contoh : Mahasiswa.IP atau

nama_variabel_pointer->nama_elemen_struct (melalui pointer)

Contoh : PM->IP atau

(*nama_variabel_pointer). nama_elemen_struct (melalui pointer)

Contoh : (*PM).IP

PM adalah pointer yang menunjuk ke alamat variabel Mahasiswa.

(*PM) menunjukkan nilai data di lokasi yang ditunjukkan oleh pointer PM, yaitu nilai variabel struktur Mahasiswa.

(*PM).IP menunjukkan nilai elemen IP untuk variabel struktur Mahasiswa.

(6)

B. Uji coba

Percobaan 1 : dasar-dasar pointer

Ketiklah kode program di atas

1. Apa yang terjadi di memori komputer setelah bagian deklarasi variable dieksekusi?

2. Jelaskan proses yang terjadi ketika baris 11 dieksekusi. Apa guna operator &?

3. Jika data x dilambangkan dengan kotak dan pointer px dilambangkan titik, ilustrasikan dengan gambar kondisi x dan px sebelum dan sesudah baris 11 dieksekusi

4. Jelaskan maksud baris 16

5. Ganti baris 8 dengan float *px. Jalankan program lalu amati apa yang terjadi.

Apa yang dapat anda simpulkan?

(7)

Percobaan 2 : mengakses nilai variable secara langsung dan secara tidak langsung

Ketiklah kode program di atas

1. Apa beda kode pada baris 14 dan 17?

2. Bagaimana cara mengakses isi variabel pointer?

3. Bagaimana cara mengakses data yang alamatnya disimpan oleh variabel pointer?

4. Pindahkan baris 16 dan 17 ke baris 10. Compile ulang. Apa yang terjadi?

Mengapa?

5. Pindahkan baris 16 dan 17 ke baris antara baris 11 dan 12. Compile ulang. Apa yang terjadi? Mengapa?

6. Jelaskan perbedaan penggunaan * pada bagian deklarasi variabel dan bagian badan program!!!

(8)

Percobaan 3 : pointer pada struct

Ketiklah kode program di atas 1. Apa guna dari baris 5 – 9?

2. Apa beda baris 21 – 22 dengan baris 25 – 26?

3. Jelaskan cara mengakses field sebuah struct menggunakan pointer!

4. Tambahkan kode sesudah baris 26 untuk mengubah nilai m.volts menjadi 30 dan m.amps menjadi 40. Kemudian tampilkan isi m.volts dan m.amps. Akses dilakukan melalui pointer pm menggunakan operator ->

5. Tambahkan hal berikut pada program di atas

 deklarasikan pm2 sebagai variabel pointer to motor

 sesudah baris ke 26 salin nilai pm ke pm2

 Tampilkan nilai m menggunakan pm2

 ilustrasikan dengan gambar pm, pm2 dan m sebelum dan sesudah penyalinan nilai

(9)

Percobaan 4 : pointer to pointer

Ketiklah kode program di atas

1. Jelaskan baris 7 – 9. Apa beda ptr dan pptr 2. Jika pada bagian badan program terdapat

 pptr

 *pptr

 **pptr

Jelaskan hasil keluarannya!

3. Ilustrasikan dengan gambar ptr, pptr, i & j setelah baris 12 dan 13 dieksekusi 4. Berapa nilai i & j setelah baris 14 dieksekusi? Tampilkan dengan printf() 5. Berapa nilai i & j setelah baris 15 dieksekusi? Tampilkan dengan printf() 6. Ilustrasikan dengan gambar ptr, pptr, i & j setelah baris 16 dieksekusi 7. Berapa nilai i & j setelah baris 17 dieksekusi? Tampilkan dengan printf() 8. Ilustrasikan dengan gambar ptr, pptr, i & j setelah baris 17 dieksekusi

Referensi

Dokumen terkait

Variabel memiliki nama (atau disebut identifier), misalnya: nama, usia, alamat dan sejenisnya sesuai dengan data yang diwakili. Nama dari setiap variabel itu harus unik dan

Misalnya data yang ada dimemori bertipe float(4 byte) dan variabel pointer yang menunjukkan kealamat ini adalah bertipe int(2 byte), maka hanya 2 byte pertama saja yang akan

Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang berlainan Struktur data

Selain mengganti nama port, kita dapat pula menggunakan alias untuk mengakses bit tertentu dari sebuah variabel yang telah

Melalui server web tertanam, Anda dapat mengakses setelan dan informasi printer dengan memasukkan alamat IP atau nama host printer ke dalam browser web (misalnya Netscape Navigator

Disamping itu, Daftar juga memerlukan suatu variabel, misalnya Awal, yang berisi alamat simpul pertama dari senarai berantai, dan pointer sentinel, yang bernama Kosong,

Hal tersebut meliputi pencegahan pengguna dalam mengakses laman khusus, Internet Protocol (IP), alamat, ekstensi nama domain, penutupan laman dari laman server di mana

~ blok range sel di lembar kerja yang dijadikan sebagai nilai absis grafik (misalnya : blok A3:A7 yang merupakan data Nama pada Gambar 77) Pengisian data ordinat di variabel Values.