pointer Oleh : Sri Supatmi,S.Kom
Pengertian Pointer Pointer merupakan variabel yang menyimpan alamat suatu data. pointer digunakan untuk menunjuk suatu data. Operator Pointer ada dua, yaitu : Operator & Operator & bersifat unary (hanya memerlukan satu operand saja). Operator & menghasilkan alamat dari operandnya. Operator * Operator * bersifat unary (hanya memerlukan satu operand saja). Operator * menghasilkan nilai yang berada pada sebuah alamat.
Deklarasi Pointer Bentuk Umum : Tipe_data *nama_pointer; Tipe data pointer mendefinisikan tipe dari obyek yang ditunjuk oleh pointer. sebelum mendeklarasikan sebuah pointer, pastikan tipenya sesuai dengan tipe obyek yang akan ditunjuk. Contoh: int *px; char *sh;
Deklarasi Pointer printf("Alamat x = %p\n", &x); Contoh program: #include<stdio.h> #include<conio.h> 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(); return 0; }
Operasi Penugasan Suatu variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi penugasan. Nilai dari suatu variable pointer dapat disalin ke variable pointer yang lain. Contoh program: #include "stdio.h" #include "conio.h" 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(); return 0; }
Operasi Aritmatika Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Begitu juga operasi pengurangan. Contoh Program: #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(); }
Operasi Logika Suatu pointer juga dapat dikenai operasi logika. Contoh Program : #include "stdio.h" #include "conio.h" void main() { int a = 3, b = 2, *pa, *pb; clrscr(); pa = &a; pb = &b; printf("alamat memori yg ditunjuk oleh pa=%p\n",&a); printf("alamat memori yg ditunjuk oleh pb=%p\n",&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 #include<iostream.h> main() { char *kota="paris"; cout<<"*kota ="<<*kota<<endl; cout<<"kota ="<<kota<<endl; return 0; } #include<iostream.h> main() { char *kota="paris"; char *pkar; pkar=kota; while(*pkar != '\0') { cout<<*pkar<<" "; pkar++; } return 0;
Array Pointer #include<iostream.h> main() { int indeks; char *negara[5]; negara[0]="Indonesia"; negara[1]="Australia"; negara[2]="Jepang"; negara[3]="Korea Selatan"; negara[4]="India"; for(indeks=0;indeks<5;indeks++) cout<<negara[indeks]<<endl; } return 0;
Pointer dan fungsi #include<iostream.h> void tulis_n_kali(char *st,int n); main() { tulis_n_kali("C++",7); return 0; } void tulis_n_kali(char *st,int n) int i; for(i=1;i<n;i++) cout<<st<<"\n";
Latihan soal Buatlah program untuk menghitung nilai rata – rata dari data yang diinputkan menggunakan pointer ! Buatlah suatu fungsi yang dapat digunakan untuk menghasilkan string yang merupakan perulangan dari n buah string argumennya. Contoh: Ulang(“halo-”,3); Maka nilai baliknya akan berupa pointer yang merujuk string”halo-halo-halo-”.
Sumber materi Abdul Kadir,2010,”mudah menjadi Programmer C++”,Yescom. Achmad Solichin,2010,”Kuliah Berseri Ilmu Komputer.com.”