Konsep Pointer dan Address dalam Bahasa C

Mahir Koding – Pointer adalah sebuah jenis variabel yang dapat menunjuk address atau alamat memory dari sebuah variabel lain. Setiap variabel biasanya mempunyai sebuah alamat karena dalam deklarasi, program akan mengalokasikan sebuah alamat untuk si variabel tersebut. Sebagai contoh kita akan menginisialisasikan variabel angka=10; Pernahkah kita terpikir apa yang program lakukan?

Sebenarnya, pada saat kita melakukan deklarasi program akan mengalokasi block memory untuk si variabel angka tadi. Bisa dianalogikan variabel angka sebagai rumah, 10 adalah isi dari rumah dan rumah pasti mempunyai alamat. Untuk mendeklarasikan variabel pointer, kita dapat menggunakan simbol bintang (*) di depan variabel yang di deklarasikan pada tipe data tertentu.

Bentuk dasar penggunaan pointer :

#include <stdio.h>

int main(){
        int angka=10;
        int *p;

        p=&angka;
        printf("%d", *p);
        getchar();
        return 0;
}

Keterangan :

  • Deklarasi awal integer angka diberi nilai 10.
  • Deklarasi pointer p (*p)
  • p=&angka; artinya kita mengassign atau menunjuk alamat dari variabel angka. Dalam bahasa C,  simbol & mempunyai arti address of.
  • Untuk mencetak isi dari *p yang mana sudah menunjuk ke alamat variabel angka, maka kita dapat melakukan printf *p; Hasil dari printf *p adalah 10. Karena, diatas kita sudah menunjuk alamat dari variabel angka.

Analogi Pointer dan Address dalam bentuk tabel bisa digambarkan seperti ini :

Variabel i j k
Value 2 7 11
Address 65524 47582 35234

Address diatas hanya contoh saja, pada dasarnya, nilai dari address pasti akan selalu berbeda-beda setiap runtime dan setiap komputer karena itu merupakan hasil generate dari memory masing-masing. Untuk mengetahui address dari variabel kita dapat melakukan output dengan simbol dan (&) seperti : printf(“%d”, &angka); 

Contoh penggunaan pointer :

#include <stdio.h>

int main(){
	//deklarasi angka dan pointer
	int angka, *p;
	//meminta inputan angka
	printf("Masukkan angka : "); scanf("%d" , &angka); fflush(stdin);
	//mencetak angka
	printf("Angka anda : %d\n", angka); 
	getchar();
	//mencetak alamat dari variabel angka
	printf("Alamat angka anda : %d\n", &angka); 
	getchar();
	printf("Assign alamat angka %d ke pointer p\n", angka); 
	getchar();
	//pointer p menunjuk alamat dari si angka
	p=&angka;
	//mencetak isi dari alamat pointer p
	printf("Isi dari pointer p : %d", *p);
	getchar();
        return 0;
}

Terima Kasih 🙂