Bahasa Pemrograman C++ ~Pengertian Pointer Beserta Contohnya~

Bahasa Pemrograman C++ ~Pengertian Pointer Beserta Contohnya~



Punyacara membagikan ilmu tentang bagaimana menggunakan pointer dalam pemrograman C++ Dengan menggunakan Pointer ini kita bisa membuat suatu aritmatika maupun tipe data string lainnya. Jika ingin lebih Lanjut silahkan baca artikel dibawah:

Pengertian Pointer

Pointer (Variabel penunjuk) adalah suatu variabel yang berisikan alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari objek lain (variabel lain) didalam memori yang telah disediakan, contohnya jika sebuah variabel berisikan alamat dari variabel lain , maka variabel pertama dikatakan menunjuk ke variabel kedua.

Operator pointer terbagi menjadi dua yaitu:

1. Operator &

  • Operator & bersifat unary (hanya memerlukan satu operand saja).
  • Operator & menghasilkan alamat dari operandnya.

2. Operator *

  • Operator * bersifat unary (hanya memerlukan satu operand saja).
  • Operator *menghasilkan nilai yang berada pada sebuah alamat.

Cara Deklarasi Pointer

Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasi terlebih dahulu sebelum menggunakannya, berikut bentuk umumnya:
Tipe_data *nama_pointer;

Tipe data pointer mendefinisikan tipe dari objek yang ditunjukan oleh pointer. Secara garis besar, Tipe apapun dari ponter dapat menunjukan lokasi dimanapun dalam memori. Bahkan operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apapun yang ditunjuk. Contohnya, Ketika mendeklarasikan sebuah pointer dengan tipe data int*, kompiler akan menganggap alamat alamat yang ditunjuk menyimpan nilai integer, walaupun sebenarnya bukan sebuah pointer int* selalu menganggap bahwa ia tetap menunjuk obyek bertipe data integer, Tanpa memperdulikan isi sebenarnya. Jadi jika ingin mendeklarasikan sebuah pointer, pastikan tipe datanya sesuai dengan tipe obyek yang akan ditunjuk.

Contoh: 

int *px;
char *sh;

Berikut Contoh Programnya


  
 #include “stdio.h”
#include “conio.h”
void main()
{ int x, y; /* x dan y bertipe int */
int *px; /* px pointer yang menunjuk objek */
clrscr();
x = 87;
px = &x; /* px berisi alamat dari x */
y = *px; /* y berisi nilai yang ditunjuk px */
printf(“Alamat x = %p\n”, &x);
printf(“Isi px = %p\n”, px);
printf(“Isi x = %i\n”, x);
printf(“Nilai yang ditunjuk oleh px = %i\n”, *px);
printf(“Nilai y = %i\n”, y);
getch();
}


Operasi Pointer

Operasi Pointer Memiliki Beberapa Kemampuan Menangani kasus:

1. Operator Penugasan

Suatu Variabel pointer seperti hallnya yang lain, juga dapat mengalami operasi penugasan. seperti nilai dari suatu variabel pointer dapat disalin ke variabel pointeryang lainnya.
Berikut Contoh Programnya:
 
#include “stdio.h”
#include “conio.h”
void main()
{ float *x1, *x2, y;
clrscr();
y = 13.45;
x1 = &y; /* Alamat dari y disalin ke variabel x1 */
x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */
printf(“Nilai variabel y = %.2f ada di alamat %p\n”, y, x1);
printf(“Nilai variabel y = %.2f ada di alamat %p\n”, y, x2);
getch();
}

2. Operasi Aritmatika

Suatu variabel ponter hanya dapat dilakukan operasi aritmatika dengan nilai interger saja. Operasi yang biasanya dilakukan adalah operasi penambahan dan pengurangan. Operasi Penambahan dengan suatu nilai menunjukan lokasi dana berikutnya (index selanjutnya) dalam memori. Begitu juga dengan operasi lain lainnya.
Berikut Contoh Programnya:
#include “stdio.h”
#include “conio.h”
void main()
{ int nilai[3], *penunjuk;
clrscr();
nilai[0] = 125;
nilai[1] = 345;
nilai[2] = 750;
penunjuk = &nilai[0];
printf(“Nilai %i ada di alamat memori %p\n”, *penunjuk, penunjuk);
printf(“Nilai %i ada di alamat memori %p\n”, *(penunjuk+1), penunjuk+1);
printf(“Nilai %i ada di alamat memori %p\n”, *(penunjuk+2), penunjuk+2);
getch();
}

3. Operasi Logika

Suatu pointer juga dapat digunakan didalam operasi logika.
Berikut Contoh Programnya:
#include “stdio.h”
#include “conio.h”
void main()
{ int a = 100, b = 200, *pa, *pb;
clrscr();
pa = &a;
pb = &b;
if(pa < pb)
printf(“pa menunjuk ke memori lebih rendah dari pb\n”);
if(pa == pb)
printf(“pa menunjuk ke memori yang sama dengan pb\n”);
if(pa > pb)
printf(“pa menunjuk ke memori lebih tinggi dari pb\n”);
getch();
}

Pointer Dan String

Pointer juga dapat menggunakan tipe data string berikut contohnya:
Contoh program1
#include “stdio.h”
void misteri1(char *);
void main() {
 char string[] = "characters";
 printf("String sebelum proses adalah %s", string);
 misteri1(string);
 printf("String setelah proses adalah %s", string);
}
void misteri1(char *s) {
 while ( *s != '\0' ) {
 if ( *s >= 'a' && *s <= 'z' )
 *s -= 32;
 ++s;
 }
} 

Contoh Program2:
#include “stdio.h”
#include “conio.h”
char *nama1 = “SPIDERMAN”;
char *nama2 = “GATOTKACA”;
void main()
{ char namax;
clrscr();puts(“SEMULA :”);
printf(“Saya suka >> %s\n”, nama1);
printf(“Tapi saya juga suka >> %s\n”, nama2);
/* Penukaran string yang ditunjuk oleh pointer nama1 dan nama2 */
printf(“SEKARANG :”);
printf(“Saya suka >> %s\n”, nama1);
printf(“Dan saya juga masih suka >> %s\n”, nama2);
getch();
}

Pointer Menunjuk Suatu Array

Pointer Juga Dapat Menunjuk Suatu Array.
Berikut Contoh Programnya:
#include “stdio.h”
#include “conio.h”
void main()
{ static int tgl_lahir[] = { 13,9,1982 };
int *ptgl;
ptgl = tgl_lahir; /* ptgl berisi alamat array */
printf(“Diakses dengan pointer”);
printf(“Tanggal = %i\n”, *ptgl);
printf(“Bulan = %i\n”, *(ptgl + 1));
printf(“Tahun = %i\n”, *(ptgl + 2));
printf(“\nDiakses dengan array biasa\n”);
printf(“Tanggal = %i\n”, tgl_lahir[0]);
printf(“Bulan = %i\n”, tgl_lahir[1]);
printf(“Tahun = %i\n”, tgl_lahir[2]);
getch();
}

Memberi Nilai Array Dengan Pointer

Pointer juga dapat diberi nilai Array.
Berikut Contoh Programnya:
#include “stdio.h”
#include “conio.h”
void main()
{ int x[5], *p, k;
clrscr();
p = x;
x[0] = 5; /* x[0] diisi dengan 5 sehingga x[0] = 5 */
x[1] = x[0]; /* x[1] diisi dengan x[0] sehingga x[1] = 5 */
x[2] = *p + 2; /* x[2] diisi dengan x[0] + 2 sehingga x[2] = 7 */
x[3] = *(p+1) – 3; /* x[3] diisi dengan x[1] - 3 sehingga x[3] = 2 */
x[4] = *(x + 2); /* x[4] diisi dengan x[2] sehingga x[4] = 7 */
for(k=0; k<5; k++)
printf(“x[%i] = %i\n”, k, x[k]);
getch();
}

Kesimpulan

Pointer berguna sebagai Petunjuk suatu variabel yang berisikan alamat memori dari suatu variabel lain. Pointer harus didefinisikan terlebih dahulu didalam tipe data, dan jika menggunakan pointer harus tau tipe yang sesuai yang diinginkan contohnya seperti memilih char atau integer. Semoga Bermanfaat :):)

Baca Juga:





EmoticonEmoticon