Contoh Program pointer Sederhana C++ dan penjelasannya

Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari variabel lain di dalam memori. Dengan kata lain, pointer berisi alamat dari variabel yang mempunyai nilai tertentu.

Suatu pointer di dalam program dimaksudkan untuk menuntuk ke suatu alamat memori. Misalnya suatu variabel X yang bertipe int dengan nilai 12 dan disimpan di memori pada alamat 0xfff2, P adalah pointer yang disimpan dalam alamat memori 0xfffA maka nilai yang ada didalam alamat 0xfffA adalah alamat dari variabel X yaitu 0xfff2.

Daftar Isi

1. Operator Pointer pada C++

2. Deklarasi Pointer pada C++

3. Pointer dan Array

4. Pointer pada Pointer

1. Operator Pointer pada C++

Suatu pointer dapat berisi alamat dari suatu variabel lain dan untuk dapat mengakses nilai yang ada di dalam variabel berpointer secara langsung dapat dilakukan dengan menggunakan operator. Ada dua operator pointer yang disediakan oleh Borland C++, yaitu:

  • Operator Dereference ( & )
  • Operator reference ( * )

1.1. Operator Deference (  & )

Pada umumnya kita tidak dapat menentukan di mana variabel akan ditempatkan dalam memori, karena penempatan suatu variabel ditentukan oleh sistem operasi. Untuk suatu keperluan tertentu terkadang kita harus mengetahui alamat suatu variabel di dalam memori. Dengan demikian, untuk dapat mengetahui alamat suatu variabel di dalam memori kita dapat melakukannya dengan menggunakan operator deference (&)  atau operator alamat (address operator) di depan nama variabel yang alamatnya akan diketahui. Operator & bersifat unary (hanya memerlukan satu operand saja) dan Operator & menghasilkan alamat dari operandnya. Untuk memperoleh alamat dari suatu variabel dapat kita lakukan dengan bentuk:

Nama_var_pointer = &variabel;

Sebagai contoh, misalkan deklarasi sebagai berikut:

int x = 8;

int *xPtr;

Misalkan x yang bernilai 8 disimpan di memori pada alamat 0x0012ff50, xPtr disimpan dalam memori pada alamat 0x0012ff4c yang berisi alamat dari variabel x. Sehingga untuk mengetahui nilai yang ada pada alamat yang disimpan oleh xPtr dapat kita lakukan seperti pernyataan berikut dan nilai variabel dapat kita lihat pada gambar dibawah.

xPtr = &x;

Contoh Program pointer Sederhana C++ dan penjelasannya

Gambar 3.1. Nilai dan Alamat Variabel di Memori

/* Program Pointer
  Nama File : Lat_III_01 */
  
#include<iostream.h>
#include<conio.h>
void main()
{
  int x=8;
  int *xPtr;
  xPtr = &x;
  cout<<"Nilai x = "<<x<<endl;
  cout<<"Alamat x = "<<&x<<endl;
  cout<<"Alamat x = "<<xPtr<<endl;
  cout<<"Nilai yang disimpan pada alamat ";
  cout<<xPtr<<" adalah "<<*xPtr;
  getch();
}

1.2. Operator Reference ( * )

Digunakan untuk mengakses secara langsung nilai yang terdapat di dalam alamat yang merupakan nilai dari variabel pointer. Dilakukan dengan menambahkan operator reference (*) di depan nama variabel, agar dapat menerjemahkan nilai sebenarnya dari suatu variabel. Operator ini biasa disebut dengan value pointed by. Dengan menggunakan operator * ini akan dihasilkan nilai yang berada pada suatu alamat memori. Operator * bersifat unary (hanya memerlukan suatu operand saja).

Sebagai contoh, misalkan deklarasi sebagai berikut:

int x = 8, y;

int *xPtr;

Misalkan x yang bernilai 8 disimpan di memori pada alamat 0x0012ff50, xPtr disimpan dalam memori pada alamat 0x0012ff4c yang berisi alamat dari variabel x. Untuk mengetahui nilai yang ada pada alamat yang disimpan oleh xPtr dapat kita lakukan seperti pernyataan berikut dan nilai variabel dapat kita lihat pada gambar dibawah.

y = *xPtr;

Contoh Program pointer Sederhana C++ dan penjelasannya

Gambar 3.2. Nilai dari Alamat yang Disimpan Variabel Pointer

/* Program Pointer
  Nama File : Lat_III_02 */
  
#include<iostream.h>
#include<conio.h>
void main()
{
  int x=8, y;
  int *xPtr;
  xPtr = &x;
  y = *xPtr;
  cout<<"Nilai x = "<<x<<endl;
  cout<<"Alamat x = "<<&x<<endl;
  cout<<"Alamat x = "<<xPtr<<endl;
  cout<<"Nilai yang disimpan pada alamat ";
  cout<<xPtr<<" adalah "<<y;
  getch();
}

2. Deklarasi Pointer pada C++

Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum digunakan.

Bentuk Umum:

tipe_data *nama_var_pointer;

dimana:

  • tipe_data dapat berupa sebarang tipe seperti halnya pada pendeklarasian variabel bukan pointer
  • nama_var_pointer adalah nama variabel pointer yang menunjuk ke data bertipe tipe_data

Contoh:

int *xPtr;

char *Karakter;

mendeklarasikan xPtr merupakan variabel pointer yang menunjuk ke data bertipe int dan Karakter merupakan variabel pointer yang menunjuk ke dapat bertipe char.

Tipe data pointer mendefinisikan tipe dari objek yang ditunjuk oleh pointer. Secara teknis, tipe apa pun dari pointer dapat menunjukkan lokasi (di manapun) dalam memori. Bahkan operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apa pun yang ditunjuk.

Contoh, ketika kita mendeklarasikan pointer dengan tipe int*, kompiler akan menganggap alamat yang ditunjuk menyimpan nilai integer—walaupun sebenarnya bukan (sebuah pointer int* selalu menganggap bahwa ia menunjuk ke sebuah obejk bertipe integer, tidak peduli isi sebenarnya). Karenanya, sebelum mendeklarasikan sebuah pointer, pastikan tipenya sesuai dengan tipe objek yang akan ditunjuk.

3. Pointer dan Array

Pointer dan array mempunyai hubungan yang dekat. Secara internal array juga menyatakan alamat, dimana pengenal array sama dengan alamat pada elemen pertama pada array. Jika kita mau mengisi alamat suatu variabel ke dalam suatu variabel pointer maka dapat dilakukan dengan menggunakan operator &, misalnya xPtr = &x, yang berarti mengisi xPtr dengan alamat dari variabel x. Hal ini berlaku hanya untuk variabel yang bukan variabel array. Tetapi jika variabel array tidak perlu menggunakan operator &.

Misalnya kita mempunya suatu deklarasi berikut.

int Nilai[] = {45, 23, 50, 8, 12, 10, 15};

int *Ptr_Nilai;

agar Ptr_Nilai menunjuk ke array Nilai, maka diperlukan pernyataan berikut:

Ptr_Nilai = Nilai;

Hal ini disebabkan karena nama array sebenarnya sudah menyatakan pointer. Oleh sebab itu operator & tidak diperlukan lagi.

/* Program Pointer dan Array
  Nama File : Lat_III_03 */
  
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
  int Nilai[]={45, 23, 50, 8, 12, 10, 15};
  int *xPtr_Nilai;
  int i;
  Ptr_Nilai = Nilai;
  cout<<"\nNilai Ptr_Nilai	: "<<Ptr_Nilai;
  cout<<"\nAlamat array Nilai	: "<<Ptr_Nilai;
  cout<<"\nNilai yang ada pada alamat "<<Ptr_Nilai<<"adalah "<<*Ptr_Nilai;
  cout<<"\nElemen array indeks pertama	: "<<Nilai[0];
  cout<<"\nElemen Array (dgn Array)	: ";
  for(i=0;i<7;i++)
    cout<<Nilai[i]<<" "; //mencetak elemen array
  cout<<"\n\nElemen Array (dgn pointer)	: ";
  for(i=0;i<7;i++)
    cout<<*(Nilai+i)<<" "; //mencetak elemen array
  getch();
}

Dari program di atas terlihat bahwa cout<<Nilai[i] sama artinya dengan cout<<*(Nilai+i). Pernyataan cout<<*(Nilai+i) artinya adalah Nilai + (ukuran tipe elemen Nilai)*i.

Baca juga : Array pada C++

Variabel pointer menunjuk alamat suatu variabel. Di samping itu suatu variabel pointer juga dapat menunjuk ke variabel pointer lainnya. Dalam hal ini dilakukan dengan cara menambahkan operator reference (*) pada variabel yang akan ditunjuk.

Contoh: misalkan kita mempunya deklarasi seperti berikut ini.

int Var_x;

int *xPtr1;

int **xPtr2;

Artinya:

  • Var_x adalah variabel bertipe int
  • *xPtr1 adalah variabel pointer yang menunjuk ke data bertipe int
  • **xPtr2 adalah variabel pointer yang menunjuk ke pointer int

Di atas telah kita lihat bahwa agar xPtr menunjuk ke variabel Var_x dapat dilakukan dengan perintah:

xPtr1 = &Var_x;

Supaya xPtr2 juga dapat menunjuk ke xPtr1 dapat dilakukan dengan perintah:

xPtr2 = &xPtr1;

Karena xPtr2 telah menunjuk atau berisi alamat xPtr1 dan xPtr1 menunjuk atau berisi alamat dari variabel Var_x, maka untuk mengakses nilai dari Var_x dapat dilakukan dengan perintah:

cout<<Var_x;

cout<<*xPtr1;

cout<<**xPtr2;

/* Program Pointer pada Pointer
  Nama File : Lat_III_04 */
  
#include<iostream.h>
#include<conio.h>
void main()
{
  int x=8;
  int *xPtr1;
  int **xPtr2;
  xPtr1 = &x;
  xPtr2 = &xPtr1;
  cout<<"Nilai x = "<<x<<endl;
  cout<<"Nilai x = "<<*xPtr<<endl;
  cout<<"Nilai x = "<<**xPtr2<<endl;
  getch();
}

Apa yang kalian ketahui tentang pointer jelaskan dan berikan contohnya?

Pointer dibuat dengan menambahkan simbol * (asterik) di depan namanya, kemudian diisi dengan alamat memori yang akan digunakan sebagai referensi. Contoh: int *pointer1 = 00001; Maka *pointer1 akan bisa mengakses data yang ada pada alamat memori 00001 .

Jelaskan apa yang dimaksud dengan pointer dan bagaimana implementasinya dalam program?

Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya. Suatu pointer bukan berisi dengan suatu nilai data seperti halnya pada variabel biasa, variabel pointer berisi dengan suatu alamat.

Apa itu program pointer?

Pointer merupakan variabel yang dapat memegang alamat dari suatu objek dalam memori. Pointer digunakan dalam program untuk mengakses dan manipulasi data pada alamat tertentu.

Apa itu pointer dalam bahasa C?

Pointer (penunjuk) adalah sebuah variabel yang digunakan sebagai penunjuk alamat dari variabel lain.