Pengertian Operator Pointer
POINTERMerupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah. Terdapat dua macam operator pointer yang disediakan oleh Borland C++ yaitu Operator dereference ( * ) dan Operator reference ( & ).
Macam-Macam Operator Pointer
Operator deference (&) ampersand sign Operator ini biasa disebut dengan address of atau operator alamat. Dengan menggunakan operator deference variable akan menghasilkan alamat lokasi memori Operator reference (*) Operator ini biasa disebut value pointed by. Dengan menggunakan operator ini akan dihasilkan nilai yang berada pada suatu alamat memori
Mendefinisikan variabel pointer
Suatu variabel pointer didefinisikan dengan bentuk sebagai berikut : Tipe_data *nama_variabel;
1. tipe_data dapat berupa sembarang tipe seperti halnya pada pendefinisian variabel bukan pointer.
2.nama_variabel adalah nama variabel pointer. Beberapa contoh pendifinisian variabel pointer :
int *pint // Pointer ke int char *pch //Pointer ke char float *pfl //Pointer ke float
contoh #include <iostream> using namespace std; int main(){ int x=10; int *p=&x; cout <<"Nilai Dari X: " << x << endl; cout <<"Nilai Dari Pointer p: " << *p << endl; cout <<"alamat dari pointer p adalah"<<p<<endl; return 0; }
Pointer void
void *ptr;
Merupakan pernyataan untuk mendefinisikan ptr sebagai variabel pointer void.
Suatu pointer void adalah pointer yang dapat menunjuk ke sembarang tipe data. Misalnya, Anda dapat mengatur agar pointer ini menunjuk ke tipe data int, tetapi di saat lain diperlukan untuk menunjuk data bertipe float
Contoh program
#include <iostream>
using namespace std;
int main() {
void *ptr; //pointer tak bertipe
int vint = 50;
float vfl = 51.5;
ptr = &vint;
//menunjuk ke int, diperkenankan
cout<<"Nilai yang ditunjuk oleh ptr : " <<*(int*)ptr<<endl;
ptr = &vfl; //menunjuk ke float, diperkenankan
cout<<"Nilai yang ditunjuk oleh ptr : " <<*(float *)ptr<<endl;
return0; }
Pointer TO String
Contoh hubungan pointer dan string ditunjukkan oleh program berikut :
#include <iostream>
using namespace std;
int main();
char *nama1 = "SPIDERMAN";
char *nama2 = "GATOTKACA";
cout<<"Awalnya saya suka "<<nama1<<endl;
cout<<"dan masih saya suka "<<nama2<<endl; }
Pada contoh di atas :
Char *nama1 = “SPIDERMAN”;
Char *nama2 = “GATOTKACA”;
Akan menyebabkan C++ : · mengalokasikan nama1 dan nama2 sebagai variabel pointer yang menunjuk ke data bertipe char dan menempatkan konstanta string “SPIDERMAN” dan “GATOTKACA” ke suatu lokasi di memori komputer. Kemudian nama1 dan nama2 akan menunjuk ke lokasi string “SPIDERMAN” dan “GATOTKACA
Operasi Pointer
Operasi Penugasan Suatu variabel pointer seperti hanya variabel yang lain, juga bisa mengalami operasi penugasan. Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang lain. Contoh program :
#include <iostream>
using namespace std;
int main() {
float *x1,*x2,y;
y = 13.45;
x1 = &y;
x2 = x1;
cout<<"Nilai variabel y = "<<y<<" ada di alamat "<<x1<<endl;
cout<<"Nilai variabel y = "<<y<<" ada di alamat "<<x2;
return 0; }
pointer to pointer
#include <iostream> using namespace std;
int main(){
int x=10;
int *p=&x;
int **y=&p;
cout <<"Nilai Dari X: " << x << endl;
cout <<"Nilai Dari Pointer p: " << *p << endl;
cout <<"Nilai Dari Pointer y: " << **y << endl;
cout <<"alamat dari pointer p adalah"<<p<<endl;
cout <<"alamat dari pointer y adalah"<<y<<endl; 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 (indeks selanjutnya) dalam memori. Begitu juga operasi penguranganya. Contoh program :#include<iostream> using
namespace std;
int main() {
int nilai[3], *penunjuk; nilai[0] = 125;
nilai[1] = 345;
nilai[2] =750;
penunjuk = &nilai[0];
cout<<"Nilai "<<*penunjuk<<"ada di alamat"<<penunjuk<<endl;
cout<<"Nilai "<<*(penunjuk+1)<<" ada di alamat "<<(penunjuk+1)<<endl;
cout<<"Nilai "<<*(penunjuk+2)<<" ada di alamat "<<(penunjuk+2)<<endl; }
Operasi Logika Suatu pointer juga dapat dikenai operasi logika.
#include <iostream>
using namespace std;
int main() {
int a = 100, b = 200, *pa,*pb;
pa = &a;
pb = &b;
if(pa<pb){
cout<<"pa menunjuk ke memori lebih rendah dari pb"<<endl;
}
if(pa==pb){
cout<<"pa menunjuk ke memori sama dengan pb"<<endl;
}
if(pa>pb){
cout<<"pa menunjuk ke memori lebih tinggi dari pb"<<endl;
}
return 0; }
#include <iostream>
using namespace std;
float Rumus(int s){
return (s*s)+((3.14*(s*0.5)*(s*0.5))*0.5);
}
int main(){
int n=7; float (*Fptr)(int n);
cout<<"gambar terdiri dari bujur sangkar dan setengah lingkaran dengan sisi : 7"<<endl; Fptr=Rumus;
cout<<"luas keseluruhan gambar adalah = "<<Rumus(n)<<endl ;
return 0;
}
No comments:
Post a Comment