Senin, 25 Februari 2019

POINTER


Setiap nama variabel yang deklarasi merupakan representasi dari sebuah alamat memori yang menampung data.  Misalkan terdapat sebuah variabel bertipe integer dengan nama var_int, maka 4 byte memori akan dipesan untuk variabel tersebut. Lokasi memori yang dipesan tersebut dikenal dengan nama var_int. Pada level mesin, lokasi tersebut memiliki alamat memori.
Dalam bahasa C, sebuah alamat memori dapat diakses dan dimanipulasi dengan menggunakan pointer. Pointer adalah sebuah variabel yang digunakan untuk menyimpan alamat memori variabel lain. Sebuah pointer dideklarasi dengan tipe data dan tanda ‘*’ (asterik) di depan nama variabel, seperti contoh di bawah.

1
2
3
4
5
6
7
int *ptr_i; /* pointer dengan tipe data integer */

float *ptr_f; /* pointer dengan tipe data float */

double *ptr_d; /* pointer dengan tipe data double */

char *ptr_c; /* pointer dengan tipe data char */

Terdapat dua operator yang digunakan dalam pointer, yaitu dereference operator (asterik (‘*’)) dan reference operator (ampersand (‘&’)). Dereference operatordigunakan untuk mendapatkan nilai dari alamat memori yang ditunjuk oleh pointer. Sedangkan reference operator digunakan untuk mendapatkan alamat memorisuatu variabel.

1
2
3
4
5
6
7
8
9
10
11
12
13
int i = 10;

/* mengambil alamat memori variabel i dengan menggunakan
 * reference operator dan menyimpannya ke dalam pointer ptr_i
 */
int *ptr_i = &i;

/* mengambil nilai dari alamat memori yang ditunjuk pointer ptr_i
 * dengan menggunakan dereference operator. Jika lupa meletakkan
 * dereference operator di depan nama variabel, maka yang akan
 * tercetak adalah alamat memori yang ditunjuk
 */
printf("%d\n", *ptr_i);

Tipe data variabel pointer harus sama dengan tipe data variabel yang ditunjuk.

Cara Kerja Pointer
Misalkan terdapat sebuah variabel i dan sebuah pointer ptr_i, dengan ptr_i menunjuk ke alamat i sebagai berikut.
1
2
3
int i = 10;

int *ptr_i = &i;
ASUMSIKAN variabel i disimpan di dalam memori dengan alamat memori 22FF3C (dalam hexadesimal) dan pointer disimpan di dalam memori dengan alamat memori 22FF38. Maka yang tersimpan di dalam pointer ptr_i adalah 22FF3C. Dengan kata lain, pointer ptr_i menunjuk ke alamat memori variabel i.

Perlu diingat, pointer hanya menujukkan ke sebuah alamat memori BUKAN menyimpan nilai yang ada pada alamat memori tersebut. Jadi, jika nilai variabel i diubah, maka nilai yang ditunjuk oleh pointer ptr_i juga akan berubah sesuai dengan nilai yang berubah. Begitu juga jika nilai yang ditunjuk pointer ptr_i diubah seperti di bawah, maka nilai pada variabel i juga akan berubah.
1
*ptr_i = 5

referensi :https://www.belajarcpp.com/tutorial/c/pointer-dasar/


0 Comments:

Posting Komentar

Diberdayakan oleh Blogger.

About me

Instagram : kvinrzkyxd
Wa : 082148535913

Email: kevinrizkyanya@gmail.com

Formulir Kontak

Nama

Email *

Pesan *

Total Tayangan Halaman


Cari Blog Ini

Sponsor

AD BANNER